2

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

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

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

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

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

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

4

3 回答 3

2

呼叫:echo session_id();。返回什么?

这是您的会话 ID。如果它在脚本运行期间发生更改,您将丢失$_SESSION数据。

于 2012-08-06T14:09:49.360 回答
1

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

if(!$_SESSION)
   session_start();
于 2012-08-06T13:49:34.183 回答
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();
?> 
于 2015-05-09T21:42:13.980 回答