所以我为我的php网站创建了这个小登录系统,我有一个登录表单,我首先使用一些会话变量(如UserId等)创建会话。 我在创建会话之前也做了session_destroy(),这样就可以销毁任何现有的会话。
然后我将这个php文件包含在我网站上每个页面的顶部,用session_start()
打开该会话并启动mysql连接等。
问题是,在某些页面上会话确实正确打开,而在其他页面上似乎创建了一个新会话。事实上,如果我转到另一个页面并返回到正确会话未打开的页面,那就是同一个错误的会话,所以我实际上打开了两个会话似乎......
当我回显它工作的页面上的会话ID和它没有的会话ID时,它们会有不同的会话ID,所以我很困惑。
答案 0 :(得分:2)
首先不要使用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"];
?>
答案 1 :(得分:0)
如果您获得重复的Cookie(如本例所示),请检查每个Cookie的域和路径。确保cookie路径是域名始终设置为相同的域,路径始终是您网站的根目录(假设您希望cookie站点全局)。
每个cookie对设置路径和域都是可见的,所有路径都以路径集开头,并且可以设置为匹配域的所有子域。
根据对问题的评论。