0

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

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

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

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

4

2 回答 2

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"];
?>
于 2012-08-15T09:40:22.523 回答
-1

如果您收到重复的 cookie(如本例所示),请检查每个 cookie 的域和路径。确保 cookie 路径是域始终设置为相同的域,并且路径始终是您网站的根目录(假设您想要 cookie 站点全局)。

每个 cookie 对设置的路径和域都是可见的,所有路径都以路径集开头,并且可以设置为匹配域的所有子域。

基于对问题的评论。

于 2012-08-15T12:35:33.887 回答