这是一个简单的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的价值
这对我来说非常重要,因为在我的网站中,我在用户进行身份验证时也会这样做。并且在浏览器重新打开后,用户被注销。