我触发了我所有网页中的以下功能。
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);
}
}
请问,我在做什么错了?
答案 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);
?>