您的位置:首页 > 编程语言 > PHP开发

浏览器禁用cookie后php如何保持session会话-use_trans_sid机制

2016-01-13 09:41 696 查看
为防止浏览器禁用cookie导致服务器会话无法保持,php开发了一个机制,该机制开启后,浏览器发起请求后,服务器会创建session文件,并对返回给浏览器的页面中所有的url进行处理,若url为相对路径(不带http://ip地址)则认为此url是链接至本服务器,因此在url后补上sessionid。当用户点击带有此url的链接标签时会携带sessionid到服务器,因此实现了会话保持。

我的php版本为5.6.16,开启上述机制的参数配置条件为:

session.use_cookies = 0 //设置客户端是否使用cookie来保存session值 该参数的值不影响上述机制的进行。

但是为了验证该机制,这里把该参数设为0,排除cookie携带seesionid的可能

session.use_only_cookies = 0 //是否只使用cookie来保存session值 该参数为1时,上述机制失效。

session.use_trans_sid = 1

修改php.ini参数后需要重启php-fpm

service php-fpm stop

service php-fpm start

我用如下函数对上述机制进行了测试:

test.php

<?php

session_start();

$_SESSION[’var1’]="中华人民共和国";

echo '<a href="s2.php">下一页</a>';

?>

s2.php

<?php

session_start();

echo "传递的session变量var1的值为:".$_SESSION[’var1’];

?>

请求test.php后,传输到浏览器的代码为:



红色部分为空时也会补上sessid,跳转至当前页。若填写为http://172.16.22.28/s2.php则不会补全



去掉http://后,也会自动补全sessid,本人认为PHP该机制的处理应该是以http://为判断条件的。

因此,刷新操作也不会补上sessid参数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: