PHP无法识别现有会话,启动新会话

时间:2012-08-06 13:46:30

标签: php session login session-cookies sessionid

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

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

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

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

这只发生在5次中,只有在我第一次访问网站时才会发生。在成功试用时,当我登录时,导航到另一个页面会给我留下1个会话ID cookie,而不是2个。

我一直在用这个问题敲打我的头,并且会喜欢任何帮助!

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

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

if(!$_SESSION)
   session_start();

答案 2 :(得分: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();
?>