Php会话无法在所有页面上正确打开

时间:2012-08-15 09:35:53

标签: php session

所以我为我的php网站创建了这个小登录系统,我有一个登录表单,我首先使用一些会话变量(如UserId等)创建会话。 我在创建会话之前也做了session_destroy(),这样就可以销毁任何现有的会话。

然后我将这个php文件包含在我网站上每个页面的顶部,用session_start()打开该会话并启动mysql连接等。

问题是,在某些页面上会话确实正确打开,而在其他页面上似乎创建了一个新会话。事实上,如果我转到另一个页面并返回到正确会话未打开的页面,那就是同一个错误的会话,所以我实际上打开了两个会话似乎......

当我回显它工作的页面上的会话ID和它没有的会话ID时,它们会有不同的会话ID,所以我很困惑。

2 个答案:

答案 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对设置路径和域都是可见的,所有路径都以路径集开头,并且可以设置为匹配域的所有子域。

根据对问题的评论。