我可以登录并访问所有会员页面,但是当我退出时,我仍然可以访问所有会员页面
我使用此代码注销:
$_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和会话?
答案 0 :(得分:0)
取代:
$_SESSION["admin_id"] = false;
试试这个:
unset($_SESSION["admin_id"]);
答案 1 :(得分:0)
如果您确实需要退出,我认为您最好的选择是使用简单的 session_destroy()使会话无效。 通过执行此操作,您可以使用isset()函数检查$ _SESSION而不会出现问题,因为属于旧会话的每个参数都已取消设置。
答案 2 :(得分:0)
这是您退出时所做的事情。
您设置 admin_id
到false
(技术上是一个值)。
$_SESSION["admin_id"] = false;
然后,您需要检查admin_id
是否设置:
isset($_SESSION['admin_id'); // returns TRUE because it "IS SET" to false
选项强>
您可以检查admin_id
是否为空(处理null
,false
,0
)。
function logged_in() {
return ! empty($_SESSION["admin_id"]);
}
您可以扩展当前的功能。
function logged_in() {
return isset($_SESSION["admin_id"] && $_SESSION["admin_id"] !== false);
}
您可以将变量设置为null。
$_SESSION['admin_id'] = null;
您可以完全销毁会话。
session_destroy();