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


PHP does not recognize existing session, starts new one

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

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

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

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

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

我一直在用这个问题撞墙,并希望得到任何帮助!

调用:echo session_id(); .退货是什么?

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

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

if(!$_SESSION)
   session_start();
显然

你会对此进行排序,但对于其他在同样的事情上挣扎的人,我在 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();
?>