【发布时间】:2015-01-15 13:30:19
【问题描述】:
当 cookie 过期时,我想要执行的操作会导致执行操作。例如我有一个 cookie:
setcookie('loggedIn', true, time()+ 3600);
当 cookie 过期时,我希望能够自动将它们重定向到不同的网页,并调用一个 php 脚本来注销用户。
【问题讨论】:
-
Sessions更适合登录管理。
当 cookie 过期时,我想要执行的操作会导致执行操作。例如我有一个 cookie:
setcookie('loggedIn', true, time()+ 3600);
当 cookie 过期时,我希望能够自动将它们重定向到不同的网页,并调用一个 php 脚本来注销用户。
【问题讨论】:
您可以通过$_COOKIE查看。
if(!isset($_COOKIE['loggedIn'])){
header('Location: /path/to/another/page');
exit;
}
您可以将其编码在一个单独的文件中并将其包含在每个页面中,或者您可以在 XHR 中实现它。
【讨论】:
听起来好像您正在尝试做的是在一段时间后自动注销用户。 Cookie 过期不是执行此操作的合适方法 - 用户可以更改 Cookie 的过期日期,并且可以在未达到过期日期的情况下删除 Cookie。 (例如,如果用户清除浏览器中的 cookie,或使用私密浏览会话。)
自动注销用户的适当方法是将过期日期存储在会话中,例如
// during login
$_SESSION["valid_until"] = time() + 3600 * 3; // stay logged in for three hours
// then, during page startup
if ($_SESSION["valid_until"] < time()) {
session_destroy(); // or store data in the session to indicate it's inactive
header("Location: error.php?err=session-timeout");
exit();
}
【讨论】: