【问题标题】:PHP - Cookie and Session Doesn't get Deleted PermanentlyPHP - Cookie 和会话不会被永久删除
【发布时间】:2018-08-22 06:42:17
【问题描述】:

我在所有网页中都触发了以下功能。

function refresh_user_auth() {

    if (isset($_COOKIE["UserID"])) {

        $_SESSION["UserIDS"] = $_COOKIE["UserID"];
        setcookie("UserID", $_COOKIE["UserID"], time() + (86400 * 30), "/");

    }
    elseif (isset($_SESSION["UserIDS"])) {

        $_SESSION["UserIDS"] = $_SESSION["UserIDS"];
        setcookie("UserID", $_SESSION["UserIDS"], time() + (86400 * 30), "/");

    }

}

我使用下面的功能退出,但当我访问网站上的其他网页时,它似乎没有将我退出。

function unset_user_auth() {

    if (isset($_COOKIE["UserID"])) {

        unset($_COOKIE['UserID']);
        $_COOKIE = array();
        setcookie('UserID', '', time() - 36000);

    }

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

        unset($_SESSION['UserIDS']);
        $_SESSION = array();
        session_destroy();
        setcookie('UserIDS', '', time() - 36000);

    }

}

请问,我做错了什么?

【问题讨论】:

  • 你在什么版本的 PHP 下开发这个?

标签: php apache session authentication cookies


【解决方案1】:

我不知道为什么您必须为 cookie 和会话分别执行此操作,您可以一次完成所有操作。注销时,如果您要销毁两者,则不需要检查是否设置了 cookie 和/或会话是否已设置(除非您可以选择保存 cookie 以用于“记住我”功能)。

这是来自session_unset() 函数页面的 PHP 文档中的注释示例。如有疑问,您可以随时参考 PHP 文档。您可以在 cmets 中找到大量示例和用例。

<?php
    session_start();
    session_unset();
    session_destroy();
    session_write_close();
    setcookie(session_name(),'',0,'/');
    session_regenerate_id(true);
?> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多