您好,登錄后才能下訂單哦!
本篇內容介紹了“如何解決新窗口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足夠應付常用情況了.
“如何解決新窗口cookie丟失的問題”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。