无法正确注销PHP

时间:2015-05-20 15:09:43

标签: 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) {
    if (!logged_in()) {
        redirect_to($page);
    }
}
在我使用退出代码后,他重定向了我。但我仍然可以输入成员页面URL并像我登录一样访问它们。我使用其他webbrowser它是不可能的,因此页面得到了正确的保护。或者我是否需要勉强销毁cookie和会话?

3 个答案:

答案 0 :(得分:0)

取代:

$_SESSION["admin_id"] = false;

试试这个:

unset($_SESSION["admin_id"]);

答案 1 :(得分:0)

如果您确实需要退出,我认为您最好的选择是使用简单的 session_destroy()使会话无效。 通过执行此操作,您可以使用isset()函数检查$ _SESSION而不会出现问题,因为属于旧会话的每个参数都已取消设置。

答案 2 :(得分:0)

这是您退出时所做的事情。

设置 admin_idfalse(技术上是一个值)。

$_SESSION["admin_id"] = false;

然后,您需要检查admin_id是否设置:

isset($_SESSION['admin_id');  // returns TRUE because it "IS SET" to false

选项

您可以检查admin_id是否为空(处理nullfalse0)。

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