对于Web应用程序,我决定将会话变量存储到数据库中。除了退出之外,一切都像我想要的那样工作,我认为只需一个简单的session_destroy()即可完成工作,但事实并非如此。
正如我提到的所有会话信息都存储在数据库中,但我注意到在调用session_destroy()时;它会从数据库中删除会话,但不会从服务器中删除。我注意到,如果我不关闭浏览器,每次登录时都会获得相同的会话ID,因此如果我使用不同的用户名登录,我仍会得到相同的会话ID。如何删除服务器会话?
这是我用来销毁会话的类中的函数:
function destroy( $id ) {
// Build query
$newid = mysql_real_escape_string($id);
$sql = "DELETE FROM sessions_table WHERE session_id = '{$newid}'";
mysql_query($sql);
return TRUE;
}
请问任何建议?
答案 0 :(得分:1)
“session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,session_start()必须被称为。
为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。可以使用setcookie()。“