這是一個簡單的php代碼,它啓動會話並重新生成會話ID並在POST請求中設置cookie生存期。爲什麼在瀏覽器重新打開後這個cookie會改變數值?
<?php
// url: http://localhost/sessiontest/
session_start();
if (isset($_POST['test'])) {
ini_set('session.cookie_lifetime', 86400);
session_regenerate_id(true);
header('Location: http://localhost/sessiontest/');
return;
}
print_r($_COOKIE);
?>
<html>
<form method="post" action="">
<input type="text" name="test" />
<input type="submit" />
</form>
</html>
我在firefox 35.0.1有問題。會話ID存儲在PHPSESSID Cookie中。會話ID重新生成後,我關閉瀏覽器並打開它。瀏覽器關閉後,Cookie值會更改。 Chrome中沒有這樣的問題。
如果打開這個頁面,你會看到一些值(值#1) PHPSESSID的cookie如果你點擊提交按鈕PHPSESSID cookie將被改變(值#2)
然後,如果你關閉Firefox 35.0.1並重新打開它,您將看到PHPSESSID cookie的值爲#1。爲什麼會發生?這是一個Firefox的錯誤? 如果您在重新打開之後在Chrome中執行相同的操作,您將看到#2的價值
這對我來說非常重要,因爲在我的網站中,我在用戶進行身份驗證時也會這樣做。並且在瀏覽器重新打開後,用戶被註銷。