PHP,如何注销帐户? session_destroy有用吗?

时间:2014-09-17 15:33:33

标签: php html session session-variables logout

如何在我的系统中对帐户注销进行编码。我已经使用header()将其返回到索引页面并销毁所有存在的会话变量。它会破坏会话,但它会返回上一页,没有会话变量(例如用户名),这是我网站注销模块的最佳方式吗?

2 个答案:

答案 0 :(得分:1)

这或多或少都是我所做的:

在显示之前需要有效登录的每个页面都会检查有效的会话变量以及数据库中相应的活动登录会话记录。如果不满足这些条件,则会通过错误警报重定向用户。

<a href='logout.php'>Logout</a>

logout.php

function deleteSessionCookie() {
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }
}

function deleteSessionIfExists() {
    if (session_id() != "") {
        $_SESSION = array();
        deleteSessionCookie();
        session_unset();
        session_destroy();
    }
}

session_start();

// record logout dateTime in db
// Update existing record using $_SESSION["loginCode"] set during login.

deleteSessionIfExists();

// redirect to index page of website

编辑:在需要登录的页面顶部,我会有这样的事情:

session_start();
if (empty($_SESSION["loginCode"]) || empty($_SESSION["userCode"]))
    header('index.php?alert=Invalid session');

在我的情况下,我还检查在登录期间是否存在我创建的许多其他会话变量,并且还检查会话值以确保与数据库的一致性。 (我将所有测试放入一个函数中,例如isValidSession(),它返回true或false,我可以在需要的每个页面上轻松地包含它。)

答案 1 :(得分:0)

您只需清空$_SESSION

即可