我正在开发一个在PHP中使用$ _SESSION变量来确定用户是否已登录的网站。在我的一台服务器(DEV服务器)上,$ _SESSION变量按预期工作,我可以确定用户是否已登录我甚至可以确定哪个用户登录,代码工作正常。
问题: 当我将完全相同的代码移动到我的生产或“实时”服务器时,不同的$ _SESSION变量会混淆。在实时环境中,一旦用户登录,他们就会保持登录状态,甚至可以从不访问该站点的其他网络上的其他计算机访问该用户的会话。
两台服务器使用相同的Linux操作系统,相同的PHP版本相同。 (它们是两个独立的相同服务器,一个用于开发,一个用于生产)。
知道为什么一台服务器工作正常而另一台服务器“坏了”?
非常感谢任何帮助!
登录代码:
<?php
session_start();
$user_id = $_REQUEST["user_id"];
if (user_login())
{
$_SESSION["UserLoggedIN"] = $user_id;
}
function user_login()
{
$sql = "SELECT password FROM db.users WHERE user_id = '". $user_id ."';";
$result = execute_get_sql($sql)['st_password'];
if (strcmp($res, $_REQUEST["password"]) == 0)
{
return true;
}
display_error(2);
return false;
}
?>
退出代码:
<?php
session_destroy();
?>
检查用户是否已登录其他页面的代码:
<?php
if (empty($_SESSION["UserLoggedIN"]))
{
//do log out...
}
echo $_SESSION["UserLoggedIN"];
?>