【问题标题】:Performing an action on cookie expiration对 cookie 过期执行操作
【发布时间】:2015-01-15 13:30:19
【问题描述】:

当 cookie 过期时,我想要执行的操作会导致执行操作。例如我有一个 cookie:

setcookie('loggedIn', true, time()+ 3600);

当 cookie 过期时,我希望能够自动将它们重定向到不同的网页,并调用一个 php 脚本来注销用户。

【问题讨论】:

标签: php cookies setcookie


【解决方案1】:

您可以通过$_COOKIE查看。

if(!isset($_COOKIE['loggedIn'])){
  header('Location: /path/to/another/page');
  exit;
}

您可以将其编码在一个单独的文件中并将其包含在每个页面中,或者您可以在 XHR 中实现它。

【讨论】:

  • 我虽然是这样,但这意味着在每个页面上都包含它。我正在寻找一种更通用的解决方案,在 cookie 到期时,脚本将自动运行,而不是仅在页面加载时(即需要运行的时候)。
  • @yitzih 你可以把它写在一个单独的文件中并包含在每个页面中吗?或者你可以在 XHR 中实现它
【解决方案2】:

听起来好像您正在尝试做的是在一段时间后自动注销用户。 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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2012-12-21
    相关资源
    最近更新 更多