SessionID在PHP中不是唯一的

时间:2017-09-08 06:50:48

标签: php session

我正在学习如何在PHP上进行会话管理,并尝试通过使用session_id()来生成登录会话哈希只允许一个登录会话,但似乎有些错误,因为每次我呼叫session_id()我将返回相同的哈希0b055b4f53310060d84535ee8e3bf663。我尝试使用多个用户登录,它为每个登录会话和每个用户返回相同的哈希值。

//Login.php:
session_start(); // Starting Session
//Take inputs, do user query
if (queryResultRows == 1){
    $_SESSION['userid']=$userinfo["uid"];
    $_SESSION['userlevel']=$userinfo["userlevel"];
    $_SESSION['login_user']=$username; // Initializing Session
    $sessionid = session_id();
    //Insert sessionId into DB..
    //Redirect to next page.
}
//Logout.php:
session_start();
if(session_destroy()) // Destroying All Sessions
{
    header("Location: index.php"); // Redirecting To Home Page
}

现在我尝试登录,我成功访问了我的页面上的所有会话限制区域(会话已创建并正在运行)然后启动了logout.php,会话被破坏,我不再访问,再次登录,但session_id()值仍然相同。我在这里做错了什么想法?

1 个答案:

答案 0 :(得分:1)

session_destroy()仅删除会话数据,不会删除附加的Cookie。

  

session_destroy()会销毁与当前会话关联的所有数据。   为了完全终止会话,还必须取消设置会话ID。如果使用cookie传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。

Documentation

您还可以使用session_regenerate_id

重新生成新的session_id

More information about PHP sessions and cookies