无法正确注销PHP
我可以登录并访问所有成员页面,但当我注销时,我仍然可以访问所有成员页面 我使用此代码注销:无法正确注销PHP,php,logout,Php,Logout,我可以登录并访问所有成员页面,但当我注销时,我仍然可以访问所有成员页面 我使用此代码注销: $_SESSION["admin_id"] = false; $_SESSION["username"] = null; redirect_to("login.php"); 此代码用于检查用户是否已登录 function logged_in() { return isset($_SESSION["admin_id"]); } function confirm_logged_in($page)
$_SESSION["admin_id"] = false;
$_SESSION["username"] = null;
redirect_to("login.php");
此代码用于检查用户是否已登录
function logged_in() {
return isset($_SESSION["admin_id"]);
}
function confirm_logged_in($page) {
if (!logged_in()) {
redirect_to($page);
}
}
他在我使用注销代码后重定向我。但我仍然可以键入成员页面URL,并像登录一样访问它们。我使用了另一个webbrowser,这是不可能的,因此页面得到了正确的保护。或者我需要完全销毁cookie和会话吗?代替:
$_SESSION["admin_id"] = false;
试试这个:
unset($_SESSION["admin_id"]);
如果您确实需要注销,我认为您最好的选择是使用一个简单的会话\u destroy()使会话无效。
通过这样做,您可以使用isset()函数毫无问题地检查$\u会话,因为属于旧会话的每个参数都已取消设置。以下是您注销时的操作 您正在将
管理员id
设置为false
(这在技术上是一个值)
然后检查admin\u id
是否设置为set:
isset($_SESSION['admin_id'); // returns TRUE because it "IS SET" to false
选项
您可以检查admin\u id
是否为空(处理null
,false
,0
)
您可以扩展当前函数
function logged_in() {
return isset($_SESSION["admin_id"] && $_SESSION["admin_id"] !== false);
}
可以将变量设置为null
$_SESSION['admin_id'] = null;
您可以完全销毁会话
session_destroy();
和
重定向到()
包含/做什么?您是否正在取消设置/销毁会话,并且会话是否已在使用会话的所有页面中启动?当变量的值为false
时,它仍然存在,并且isset()
返回true
。重定向\u to只是重定向的功能,但我插入了一个函数以使其变短。您已经得到以下答案,问他们或者接受回答。
$_SESSION['admin_id'] = null;
session_destroy();