熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

ie與session丟失(新窗口cookie丟失)實測及解決方案

2013-11-15 12:24:03  來源: PHP編程 
正如標題所言測試結果為如果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足夠應付常用情況了


From:http://tw.wingwit.com/Article/program/PHP/201311/20871.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.