【问题标题】:PHP does not recognize existing session, starts new onePHP 无法识别现有会话,启动新会话
【发布时间】:2012-08-03 11:59:34
【问题描述】:

我有一个使用 php 登录的网站。每次访问页面时,我都会调用 session_start()

我一直有这个不寻常的问题,其中五分之一(左右),我的 session_start 将无法识别现有的 PHPSESSID cookie,而是创建一个新的,所以我有 2 个,然后停止使用存储在第一个会话中的所有数据。

它是这样的: 我成功登录,并成功重定向到我之前登录但现在登录的同一页面,并且我被分配了一个会话 id cookie,并且会话成功存储了它的数据(所有检查和确认)

然后我点击页面上的任何链接(甚至是指向我所在页面的链接),它不会继续会话,而是创建一个新会话,给我第二个会话 cookie 并有效地记录我出去。

这种情况仅发生五分之一,并且仅在我第一次访问该网站时发生。在成功的试验中,当我登录时,导航到另一个页面会给我留下 1 个会话 id cookie,而不是 2 个。

我一直在努力解决这个问题,希望得到任何帮助!

【问题讨论】:

  • 提示(题外话)!少把你的头撞到墙上,它应该能让你在未来更快地找出问题。此外,它还会对您的身体造成严重伤害。
  • 我们可以看看你的代码吗?您是否包括任何也调用session_start(); 的文件?
  • 不幸的是,代码真的很长。我的搜索机制确实有第二个 session_start(),但是当我禁用它时,问题仍然存在。

标签: php session login session-cookies sessionid


【解决方案1】:

显然您已经对此进行了排序,但是对于其他遇到相同问题的人,我在 logout.php 文件中使用了此方法。 session_regenerate_id() 重置使用的会话变量。希望这对其他人有帮助

<?php   
session_start(); //to ensure you are using same session
session_unset($_SESSION['currentUser']);
session_destroy(); //destroy the session
$_SESSION = array();
session_regenerate_id(TRUE);
header("location:/final/index.html"); //to redirect back to "index.php" after logging out
exit();
?> 

【讨论】:

    【解决方案2】:

    致电:echo session_id();。返回什么?

    这是您的会话 ID。如果它在您的脚本流程中发生变化,您将丢失您的 $_SESSION 数据。

    【讨论】:

    • 是的,这就是问题所在。成功登录后,当我单击链接时,会话 ID 会发生变化。但它仍然有带有旧会话 ID 的旧 cookie,所以我不明白它为什么要创建一个新会话。
    • 我做了一个测试,在成功登录和重定向结束时,我检查了我所有的会话变量和 ID,它们都很好,然后一旦我重定向,我就会再试一次变量消失了,ID 也不同了。
    • 可能是会话超时。尝试手动设置会话 ID。在您在所有页面上调用 session_start(); 之前,请致电:session_id('TEST');。然后再试一次。
    • 这确实解决了问题。这让我真正分析了 cookie,当我访问 www.example.com 或 example.com 时,我意识到系统可以正常工作,但如果我在 example.com 并单击指向 www.example 的链接.com 然后在切换到 www 时它无法识别旧 cookie。有人知道如何处理吗?
    • 这是子域的问题。看这里:stackoverflow.com/questions/644920/…
    【解决方案3】:

    您可能正在销毁并重新创建会话。在创建之前确保会话不存在。

    if(!$_SESSION)
       session_start();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-23
      • 2013-10-17
      • 2012-10-11
      • 2013-06-13
      相关资源
      最近更新 更多