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

时间:2023-03-08 16:11:23

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

为防止浏览器禁用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后,传输到浏览器的代码为:

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

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

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

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

因此,刷新操作也不会补上sessid参数。