【发布时间】:2016-05-11 19:06:57
【问题描述】:
我有一个按以下方式形成的会话:
function sec_session_start() {
$session_name = 'primary_session';
$secure = false;
$httponly = true;
if (ini_set('session.use_only_cookies', 1) === FALSE) {
header("Location: /error?e=1");
exit();
}
$cookieParams = session_get_cookie_params();
session_set_cookie_params(3600,$cookieParams["path"],$cookieParams["domain"],$secure,$httponly);
session_name($session_name);
session_start();
session_regenerate_id(true);
}
我通过在我的索引页面上添加
sec_session_start(); 在我的所有页面上使用它,这需要正确的文件,具体取决于我正在访问的页面。
它在缓慢的导航下工作得很好。
但是,当发生快速导航点击时,由于某种原因未选中它,并且用户已注销。 怎么会?
这是我快速按下的按钮。注意:它还将页面从www.example.com 更改为www.example.com/users,然后重复www.example.com/users 直到会话中断。
这是大约 2-3 次快速点击后的结果。每秒最多按下 1-2 次即可正常工作。
我试过不把它当成函数用,放在页面绝对TOP上也没成功。
【问题讨论】:
-
我认为,这可能是您的浏览器的一个功能。也许当您的浏览器看到您正在尝试重新加载页面时,会在缓存和 cookie 被清除的地方进行完全重新加载,以便会话 cookie 不再可用并且您已注销。 (这是我的想法,我没有测试任何东西。)
-
在所有浏览器中发生,包括最新的 Safari 和 Mozilla 更新。此外,cookie 时间为 1 小时。
-
@Reflic 同意,但是,这可能是 php.ini 问题吗?我没有这样的文件并使用所有标准选项..
-
@Reflic 如果你能投票以引起更多关注,我会很高兴。真是个奇怪的问题。从来没有经历过...
-
我想我发现了错误。你为什么在这里使用“session_regenerate()”?
标签: php security session session-cookies session-state