新窗口cookie丟失 ie與session丟失實測及解決方案
今天在一個群中有人問到ie6中使用js的open,發(fā)現(xiàn)新窗口中并獲取不到session,
經(jīng)過使用下面的測試代碼測試發(fā)現(xiàn),是因為phpsessionid儲存是進(jìn)程級的有效期,只有同一進(jìn)程才能獲取得到,很多人說,open后或是target="_blank",都是會打開新的ie進(jìn)程,
所以,之前窗口的phpsessionid就不跟著新窗口走,導(dǎo)致獲取不到.
我自己的測試使用的是ietest,6/7/8(9啟動不起來,不確定),都出現(xiàn)相同的情況.
但是使用windows自帶的ie10測試不存在此情況.
chrome也是多線程,但是并不存在此情況.
firefox不存在此情況.
index.php
復(fù)制代碼 代碼如下:
?php
setcookie(’kkkkk’,’bbbb’, time()1111111);
session_start();
$_SESSION[’qidizi’] = ’kkkk’;
var_dump( $_SESSION,$_COOKIE);
?
input type="button" value="https://www.questions.com.cn/dnjc/d" onclick="window.open(’./b.php’);" /
a target="_blank"dddd/a
b.php 跳出頁面
復(fù)制代碼 代碼如下:
?php
session_start();
var_dump( $_SESSION,$_COOKIE);
從測試中看到,如果cookie設(shè)置是延后定時失效,而非進(jìn)程級的,那在open后也能看到,
所以,針對此情況,防止用戶在使用ie內(nèi)核出現(xiàn)登錄狀態(tài)丟失,可以配合cookie來使用,
php配置提供一個方式是自動把sid加到uri中,但是對于相對路徑并不會自動添加,
只不過,cookie被禁用這種極端情況,極少遇到,
cookie session足夠應(yīng)付常用情況了.您可能感興趣的文章:asp.net 修改/刪除站內(nèi)目錄操作后Session丟失問題JQuery上傳插件Uploadify使用詳解及錯誤處理asp.net刪除文件session丟失IIS服務(wù)器中 ASP.NET State Service 開啟后 Session 仍容易丟失的問題終極解決辦法asp.net 刪除項目文件/文件夾IIS重啟 , Session丟失問題ASP.NET在IE10中無法判斷用戶已登入及Session丟失問題解決方法uploadify在Firefox下丟失session問題的解決方法iis7中session丟失的解決方法小結(jié)Session丟失的解決辦法小結(jié)解決uploadify使用時session發(fā)生丟失問題的方法
