正如标题所言测试结果为如果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足够应付常用情况了 |