【问题标题】:Destroying Sessions in database with PHP使用 PHP 销毁数据库中的会话
【发布时间】:2009-11-10 04:52:08
【问题描述】:

对于 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;

}

有什么建议吗?

【问题讨论】:

标签: php


【解决方案1】:

php-manual:

"session_destroy() 销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话 cookie。要再次使用会话变量, session_start() 必须被调用。

为了完全终止会话,例如注销用户,还必须取消设置会话 ID。如果使用 cookie 传播会话 id(默认行为),则必须删除会话 cookie。 setcookie() 可以用于此。"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-25
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多