PHP-Cookie和会话不会永久删除

时间:2018-08-21 22:01:56

标签: php apache session authentication cookies

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

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);

    }

}

请问,我在做什么错了?

1 个答案:

答案 0 :(得分:0)

我不确定为什么要分别对Cookie和会话执行此操作,您可以一次完成所有操作。注销时,无论如何都要销毁这两者,不需要检查是否设置了cookie和/或设置了会话(除非您可以为“记住我”功能选择保存cookie)。

这是来自session_unset()函数页面的PHP文档中的注释示例。如有疑问,您总是可以参考PHP文档。您会在评论中找到足够的示例和用例。

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