【问题标题】:PHP - destroy session and remove cookiesPHP - 销毁会话并删除 cookie
【发布时间】:2020-04-27 23:25:24
【问题描述】:

当会话被销毁或过期时,我有一个清除 cookie 的问题。我使用会话(登录用户)和 cookie(购物车)创建应用程序,当会话被销毁或过期时,我必须清除购物车。我正在尝试使用 $_SESSION[SESSION_NAME],但并非总是 $_SESSION[SESSION_NAME] 在销毁或过期后被删除。

if(!isset($_COOKIE[SESSION_NAME])) {
   clearCookie();
}

当我删除带有会话 ID 的 cookie 时,cookie 已被清除,但当会话过期时,cookie(和带有会话 ID 的 cookie)已经存在。

我尝试了所有会话功能 (https://www.php.net/manual/en/ref.session.php),但没有找到好的解决方案。 会话被删除或过期时如何清除cookie?

【问题讨论】:

    标签: php session cookies


    【解决方案1】:

    由于您的 cookie 是由您的 session 中的数据识别的,因此在销毁 session 之前删除/清除 cookie 是合乎逻辑的。

    所以,每当您需要销毁会话时,请先清除 cookie,然后再销毁会话。

    类似这样的:

    clearCookie();
    unset($_SESSION);
    session_destroy();
    

    【讨论】:

      【解决方案2】:

      将 cookie 值设置为过去的日期

      setcookie($cookie_name, '', time() - (86400 * 30), "/","");  // 86400 = 1 day
      session_destroy();
      

      【讨论】:

        猜你喜欢
        • 2011-01-15
        • 1970-01-01
        • 2012-05-25
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 2019-01-19
        • 1970-01-01
        • 2011-02-01
        相关资源
        最近更新 更多