您当前的位置: 首页 > 网站编程 > PHP教程 > ie与session丢失(新窗口cookie丢失)实测及解决方案

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

作者:不详 来源:网络 发布时间: 2014-08-17 23:19 点击:
正如标题所言测试结果为:如果cookie设置是延后定时失效,而非进程级的,那在open后也能看到,所以,针对此情况,防止用户在使用ie内核出现登录状态丢失,可以配合cookie来使用 今天在一个群中有人问到ie6中使用js的open,发现新窗口中并获取不到session, 经过使用下面的测试

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

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

  今天在一个群中有人问到ie6中使用js的open,发现新窗口中并获取不到session,

  经过使用下面的测试代码测试发现,是因为phpsessionid储存是进程级的有效期,只有同一进程才能获取得到,很多人说,open后或是target="_blank",都是会打开新的ie进程,

  所以,之前窗口的phpsessionid就不跟着新窗口走,导致获取不到.

  我自己的测试使用的是ietest,6/7/8(9启动不起来,不确定),都出现相同的情况.

  但是使用windows自带的ie10测试不存在此情况.

  chrome也是多线程,但是并不存在此情况.

  firefox不存在此情况.

  index.php

  复制代码 代码如下:

  <?php

  setcookie('kkkkk','bbbb', time() + 1111111);

  session_start();

  $_SESSION['qidizi'] = 'kkkk';

  var_dump( $_SESSION,$_COOKIE);

  ?>

  <input type="button" value="d" onclick="window.open('./b.php');" />

  <a href="b.php" target="_blank">dddd</a>

  b.php 跳出页面

  复制代码 代码如下:

  <?php

  session_start();

  var_dump( $_SESSION,$_COOKIE);

  从测试中看到,如果cookie设置是延后定时失效,而非进程级的,那在open后也能看到,

  所以,针对此情况,防止用户在使用ie内核出现登录状态丢失,可以配合cookie来使用,

  php配置提供一个方式是自动把sid加到uri中,但是对于相对路径并不会自动添加,

  只不过,cookie被禁用这种极端情况,极少遇到,

  cookie+session足够应付常用情况了.
分享到:
本文"ie与session丢失(新窗口cookie丢失)实测及解决方案"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4