无法正确注销PHP
Can not log out correctly PHP
我可以登录并访问所有会员页面,但是当我退出时,我仍然可以访问所有会员页面
我使用此代码注销:
$_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 并像登录一样访问它们。我使用其他网络浏览器这是不可能的,因此页面受到正确保护。还是需要彻底销毁cookie和session?
代替:
$_SESSION["admin_id"] = false;
试试这个:
unset($_SESSION["admin_id"]);
如果您确实需要注销,我认为您最好的选择是使用简单的 session_destroy() 使会话无效。
通过这样做,您可以毫无问题地使用 isset() 函数检查 $_SESSION,因为属于旧会话的每个参数都已取消设置。
这是您注销时正在做的事情。
您正在 将 admin_id
设置为 false
(这在技术上是一个值)。
$_SESSION["admin_id"] = false;
然后检查 admin_id
是否 set:
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);
}
您可以将变量设置为空。
$_SESSION['admin_id'] = null;
您可以完全销毁会话。
session_destroy();
我可以登录并访问所有会员页面,但是当我退出时,我仍然可以访问所有会员页面
我使用此代码注销:
$_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 并像登录一样访问它们。我使用其他网络浏览器这是不可能的,因此页面受到正确保护。还是需要彻底销毁cookie和session?
代替:
$_SESSION["admin_id"] = false;
试试这个:
unset($_SESSION["admin_id"]);
如果您确实需要注销,我认为您最好的选择是使用简单的 session_destroy() 使会话无效。 通过这样做,您可以毫无问题地使用 isset() 函数检查 $_SESSION,因为属于旧会话的每个参数都已取消设置。
这是您注销时正在做的事情。
您正在 将 admin_id
设置为 false
(这在技术上是一个值)。
$_SESSION["admin_id"] = false;
然后检查 admin_id
是否 set:
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);
}
您可以将变量设置为空。
$_SESSION['admin_id'] = null;
您可以完全销毁会话。
session_destroy();