禁用cookie后如何正常使用session

session会话有基于cookie和基于url两种传递SESSIONID的方法。

方法一:使用session.use_trans_sid=1,在php.ini中配置
为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置 php.ini中 session.use_trans_sid=1 ,表示当客户端浏览器禁止cookie的时候,页面上的链接会基于url传递SESSIONID。
php.ini 文件中还有两个选项
session.use_cookies=1
session.use_only_cookies=1
意义:
session.use_cookies表示是否开始基于cookies的session会话
session.use_only_cookies 表示是否只开启基于cookies的session的会话方式
所以如果想要在浏览器开启cookie的时候用基于cookie的方式,在未开启cookie的时候使用url的方式就进行如下设置(最常用的方式,推荐)
在php.ini文件中
session.use_trans_sid=1
session.use_only_cookies=0
session.use_cookies=1
或者 在php程序中
ini_set(“session.use_trans_sid”,”1″);
ini_set(“session.use_only_cookies”,0);
ini_set(“session.use_cookies”,1);
如果不管浏览器是否开启cookie,都使用url的方式就进行如下设置(这个例子主要想说明一下设置session.use_only_cookies 和 session.use_cookies的区别)
在php.ini文件中
session.use_trans_sid=1
session.use_only_cookies=0
session.use_cookies=0
或者 在php程序中
ini_set(“session.use_trans_sid”,”1″);
ini_set(“session.use_only_cookies”,0);
ini_set(“session.use_cookies”,0);

方法二:在每个超链接上添加一个PHPSESSID
//防止返回初始页产生新的session
if(isset($_GET["PHPSESSID"])){
   session_id($_GET["PHPSESSID"]);
}
//启动一个session
session_start();
//获取当前session的session_id()
$sid=session_id();
//在每个链接上添加参数PHPSESSID=$sid
其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
   //设置当前的session为初始的session,session_id()一致即可
   session_id($_GET["PHPSESSID"])
}
session_start();

你可能感兴趣的:(session)