【问题标题】:Force PHP Session Destroy Using Meta Refresh使用元刷新强制 PHP 会话销毁
【发布时间】:2021-07-31 23:38:39
【问题描述】:

我进行了广泛的搜索,虽然我发现了很多关于管理 PHP 会话过期时间的问题,但我没有发现任何与我提出的方法有关的问题。我有工作代码,但想通过这个社区传递它,看看是否有任何不可预见的问题或潜在的利用。提前感谢您的反馈。

基本上,一旦设置了购物车会话,页面将开始每 10 分钟不活动刷新一次。一旦总运行时间(自设置会话以来)超过 30 分钟,用户将被重定向到销毁所有会话的页面。

if (isset($_SESSION["shopping_cart"])) {

    echo '<meta http-equiv="refresh" content="600" />';

    if (!isset($_SESSION['timer'])) {
        $_SESSION['timer'] = time();
    }

    $now = time();
    $elapsed = $now - $_SESSION['timer'];

    if ($elapsed > 1800) {
        header('Location: session_reset.php');
        exit();
    }

}

【问题讨论】:

  • 良好的代码缩进将帮助我们阅读代码,更重要的是,它将帮助您调试代码Take a quick look at a coding standard 为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • @RiggsFolly 感谢您的反馈。
  • 闲置 10 分钟后刷新的作用是什么?
  • @ZoliSzabó 能够运行它下面的 PHP 代码。 PHP 只会在页面加载和/或 http 请求时执行,我试图避免使用像 JS 这样的东西。本质上,它会每 10 分钟检查一次,看看是否超过 30 分钟。
  • 没有真正需要“手动”处理会话清理,因为这些可以由 PHP 配置值控制(查看session.cookie_lifetimesession.gc_maxlifetime)。一旦会话 (cookie) 过期,存储在会话中的数据将不可用。

标签: php session page-refresh destroy cache-expiration


【解决方案1】:

我没有发现您的代码有问题,它每 10 分钟检查一次会话时间是否已超过 30 分钟,以及是否有重定向以终止会话。

不确定您为什么要这样做?也许将用户购物篮存储在 cookie 或本地存储中,然后终止会话并留下通知 - 嘿,用户很抱歉您的会话超时,但不要担心我们已将您的购物篮保存在这里 ....

【讨论】:

  • 感谢您的意见,我会考虑的。
猜你喜欢
  • 2016-11-19
  • 2012-05-25
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 2016-11-04
  • 2017-11-19
相关资源
最近更新 更多