为什么我的php会话信息在不同的服务器上表现不同

时间:2012-07-22 09:44:36

标签: php

我正在写一个简单的网站php / jquery / mysql等。目前我有一个非常简单的登录系统,一旦用户登录会话变量被设置被引用以确认他们是否仍然登录在其他页面上。代码是:

$_SESSION['logged_in'] = TRUE;
$_SESSION['member_id'] = $member_id_for_session;
$_SESSION['handle'] = $user_handle;

我在util文件中有各种各样的功能,例如:

function echoUserHandle() {
    if (isset($_SESSION['handle'])) {
        echo "Welcome " . $_SESSION['handle'];
    } else {
        echo "You are not logged in";
    }
}

function checkLoggedIn() {

if (isset($_SESSION['logged_in'])) {
    return TRUE;
} else {
    return FALSE;
}
}

这在我的Mac上的MAMP服务器上使用chrome工作正常但是当我把它推出到我的远程服务器时,即使在我用来开发的同一个浏览器上,我也得到了不一致的数据视图。我看到这一点只是因为有些页面显示“你没有登录”状态,而有些页面显示正确的用户ID。

同样,一旦用户退出,会话将被完全销毁:

        unset($_SESSION['logged_in']);
        unset($_SESSION['member_id']);
        unset($_SESSION['handle']);
        $_SESSION = array();

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

        session_destroy();

这可能有点矫枉过正,但是当我在某些页面上以不同的用户身份重新登录时,它仍会显示以前登录的用户。这表明会议有问题不是吗?

任何人都可以建议一种方法来调试这个,我在其他领域做了很多开发但是php对我来说还是新手。

非常感谢

0 个答案:

没有答案