电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

ie与session丢失(新窗口cookie丢失)实测及解决方案


发布日期:2018/7/15
 
正如标题所言测试结果为如果cookie设置是延后定时失效而非进程级的那在open后也能看到所以针对此情况防止用户在使用ie内核出现登录状态丢失可以配合cookie来使用

今天在一个群中有人问到ie中使用js的open发现新窗口中并获取不到session
经过使用下面的测试代码测试发现是因为phpsessionid储存是进程级的有效期只有同一进程才能获取得到很多人说open后或是target="_blank"都是会打开新的ie进程
所以之前窗口的phpsessionid就不跟着新窗口走导致获取不到
我自己的测试使用的是ietest//(启动不起来不确定)都出现相同的情况
但是使用windows自带的ie测试不存在此情况
chrome也是多线程但是并不存在此情况

firefox不存在此情况
indexphp

复制代码 代码如下:
<?php
setcookie(kkkkkbbbb time() + );
session_start();
$_SESSION[qidizi] = kkkk;
var_dump( $_SESSION$_COOKIE);
?>
<input type="button" value="d" onclick="windowopen(/bphp);" />
<a href="bphp" target="_blank">dddd</a>


bphp 跳出页面

复制代码 代码如下:
<?php
session_start();
var_dump( $_SESSION$_COOKIE);


从测试中看到如果cookie设置是延后定时失效而非进程级的那在open后也能看到
所以针对此情况防止用户在使用ie内核出现登录状态丢失可以配合cookie来使用
php配置提供一个方式是自动把sid加到uri中但是对于相对路径并不会自动添加
只不过cookie被禁用这种极端情况极少遇到
cookie+session足够应付常用情况了

上一篇:请离开include

下一篇:深入解析fsockopen与pfsockopen的区别