日期:2014-05-16  浏览次数:20393 次

关于ie的session丢失问题..求各路大神帮忙下
代码很简单

session_start();
header("Content-Type: text/html;charset=utf-8");
setcookie ('username', "aa",time()+3600*24*365);
$_SESSION['username'] = "a"; 
echo "PHPSESSID:".$_COOKIE['PHPSESSID'];


在firefox,chrome中能正常显示PHPSESSID,但在ie中有写入session,却没法写入到 $_COOKIE['PHPSESSID'],导致后面调取不到session内容。求解答
环境IE6

------解决方案--------------------
刷新一下就有了,除非你关闭了 cookie
------解决方案--------------------
setcookie ('username', "aa",time()+3600*24*365,"/");
------解决方案--------------------
看到楼主session_start后就马上echo了PHPSESSID..
setcookie后虽然服务端会发送cookie数据给浏览器,但是$_COOKIE数组不会马上得到这个相应的键,包括第一次session_start后COOKIE不会马上有PHPSESSID的,COOKIE数组的生成是请求发生时,浏览器附带COOKIE到服务端,服务端才生成的,不是setcookie时实时变化的

所以第一次setcookie或者session_start,$_COOKIE数组是空的,但客户端却已经有了COOKIE数据了,等客户端刷新再请求过来时就会有COOKIE数组的内容了,不过楼主刷新多几次倒不会看到报错.希望楼主对这方面有正确的理解,或者可能你本身已经知道.
==========================================


正题,按照我的经验,发送cookie要兼容IE浏览器的话必须在setcookie函数的参数中带上path参数