我有一个带有php登录的网站。每次访问一个页面时,我都会调用session_start()
。
我一直遇到这个不寻常的问题,其中有五分之一(左右),我的session_start将无法识别现有的PHPSESSID
cookie,而是创建一个新的,所以我有2个,并停止使用第一个会话中存储的所有数据。
它是这样的: 我成功登录,并成功重定向到我所在的同一页面,但现在已登录,并且我被分配了一个会话ID cookie,并且会话成功存储了其数据(全部已检查并确认)
然后我点击页面上的任何链接(甚至链接将我带到我所在的同一页面)而不是继续会话,它会创建一个新会话,给我第二个会话cookie并有效地记录我出。
这只发生在5次中,只有在我第一次访问网站时才会发生。在成功试用时,当我登录时,导航到另一个页面会给我留下1个会话ID cookie,而不是2个。
我一直在用这个问题敲打我的头,并且会喜欢任何帮助!
答案 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();
?>