我正在编写一个简单的网站 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 上使用 chrome 的 MAMP 服务器上运行良好,但是当我将它推送到远程服务器时,即使在我用来开发的同一浏览器上,我也会得到不一致的数据视图。我看到这一点只是因为某些页面显示状态“您未登录”,而有些页面显示正确的用户 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 对我来说仍然是新的。
非常感谢