如果浏览器禁用COOKIE,这在服务器启动回话的时候,无法将session id设置到客户端COOKIE,然后用户切换页面的时候就无法将session id通过header头传回服务器,所以访问另外一个页面的时候,服务器重新分配seesion id,造成跟踪用户信息失败,无法在页面间传递用户信息。
解决办法:
方法一:PHP4.2以上版本,且在linux服务器环境下,通过配置php.ini中的enable-trans-sid ,session.use_trans_sid,PHP会在客户端禁用cookie的情况下,自动在URL后面添加SESSION ID。如果在WINDOWS系统做服务器,则使用PHP中的SID常量添加到URL后面的办法 ,也可以实现通过URL传SESSION ID
/*创建SESSION会话前,判读URL是否传递有SESSION ID过来
* 如果SESSION ID非空,则通过session_id()使用传递过来的session id,
*/
$sid=!empty($_GET[session_name()])?$_GET[session_name()]:'';
if($sid){
session_id($sid);
}
/*如果session_start()前不进行SESSION ID设置,
每次会使用新的SESSION ID创建会话
*/
session_start();
//设置$_SESSION[]变量
$_SESSION["name"]="GoodBoy";
?>
跳转到test2.php test1.php
test2.php
//
$sid=!empty($_GET[session_name()])?$_GET[session_name()]:'';
if($sid){
session_id($sid);
}
session_start();
echo "你好!{$_SESSION['name']}";
?>