我面临一个奇怪的情况。基本上在我正在做的每个网页上
session_start();
if(!isset($_SESSION['login']))
header("Location: login.php");
确保每个用户都先登录。我正在使用chrome,如果我登录到我的Web应用程序并打开任何页面,它会正常工作。同时,如果在另一个选项卡中,我登录到我的托管服务器,我将退出我的Web应用程序。如果我再次登录我的应用程序,我将退出托管服务器!!
我做错了什么?我检查或设置会话变量的方式有问题吗?
我按如下方式设置会话:
//if authentication successful
session_start();
$_SESSION['login'] = "1";
答案 0 :(得分:1)
我有一个非常类似的问题,我认为这只是因为两个具有相同名称的会话,在同一个域的同一个地方不能共存。
也许解决方案应该是使用会话cookie。您可以仅为文件夹设置cookie,而不是为整个域设置cookie。这样我认为你可以同时管理2个会话,但我不确定。
试试这个:
session_start();
setcookie(session_name(), session_id(), 0, '/public/');
/public/
可能是您网站所在的特定文件夹或应用程序路径(感谢Paul指出这一点)。
然后你会检查是否设置了会话:
$session_cookie =
isset($_COOKIE[ini_get('session.name')]) ?
$_COOKIE[ini_get('session.name')] :
null;
可能这不起作用,因为其他会话可能“存储”在Web应用程序的根文件夹中。但是,如果你能够为你的托管服务器做上述事情,你应该解决你的问题。
您还可以尝试在Web应用程序中为会话设置不同的名称。
希望这有帮助。
答案 1 :(得分:1)
我认为您会发现两个主机具有相同网络名称的原因,例如test.www.example.com和www.example.com
只需为测试计算机使用不同的网络名称,它应该可以使用或确保明确使用session.cookie_domain的非重叠值