客户端禁用cookie以后 session还是可以用,此时session的id值是基于cookie传递的,所以session就不能共享传递了,可以通过在url中附加PHPSESSID的值进行传递,这个就是session的id值。
禁用cookie,sessionid就不能直接传递了,因为http请求时sessionid就是放在cookie里的。你说的通过url传递的,那是变通的方法,服务器端通过session_id()函数可以获知当前session的sessionid,然后在用php生成页面的时候,把sessionid作为参数附加到url里,确实可以实现在禁用cookie的情况下传递sessionid
第一种方式:
在每个超链接上添加一个PHPSESSID=$sid
//防止返回初始页产生新的session
if(isset($_GET["PHPSESSID"])){
session_id($_GET["PHPSESSID"]);
}
session_start();
$sid=session_id();
//在每个链接上添加参数PHPSESSID=$sid
其他页面的获取方式为:
if(isset($_GET["PHPSESSID"])){
session_id($_GET["PHPSESSID"])
}
session_start();
第三种方式:
使用session.use_trans_sid=1,php.ini中配置
这种方式会在url上自动加上SID(href,location,action,注意:js跳转不会添加上SID)
1、设置php.ini的session.use_trans_sid = 1或者打开enable-trans-sid选项,让PHP自动跨页传递session id。
2、手动通过URL传值、隐藏表单传递session id。
3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。