所以我为我的php站点创建了这个小的登录系统,我有一个登录表单,我首先在其中创建了带有一些会话变量的会话,比如UserId等等。在创建会话之前,我还执行了session_destroy(),以便销毁任何现有的会话。
然后我在我的站点上的每个页面的顶部都包含了这个php文件,它用session_start()
打开会话并启动mysql连接等等。
问题是,在某些页面上,会话确实正确打开,而在其他页面上,似乎创建了一个新会话。实际上,如果我转到另一个页面,并返回到没有打开正确会话的页面,这是相同的错误会话,所以我实际上打开了两个会话……
当我在页面上回显会话ID时,它们有不同的会话ID,所以我很困惑。
发布于 2012-08-15 12:35:34
如果获得重复的cookie (如本例所示),请检查每个cookie的域和路径。确保cookie路径总是设置为相同的域,并且路径始终是您网站的根(假设您想要cookie site-global)。
每个cookie对于设置的路径和域、以路径设置开始的所有路径都是可见的,并且可以设置为与该域的所有子域相匹配。
基于对问题的评论。
发布于 2012-08-15 09:40:23
首先,不要使用session_destroy()
,因为它会在下一个页面请求时删除会话。请改用:
unset( $_SESSION ); //this will delete the session immediately
要尝试测试该问题,请使用session_id()
函数:
<?php
$a = session_id();
if(empty($a)) session_start();
echo "SID: ".SID."<br>session_id(): ".session_id()."<br>COOKIE: ".$_COOKIE["PHPSESSID"];
?>
https://stackoverflow.com/questions/11967026
复制