如何杀死PHP会话?

时间:2010-11-21 19:02:09

标签: php session

我正在写一个社交网站,我正在试图弄清楚PHP会话。在登录页面的顶部,我调用session_destroy(),并在新用户正式注册为用户的页面和用户主页上调用session_start()。当用户注销时,它们会链接到具有session_destroy的主页,但是无论用户输入什么用户名或密码,我都可以以刚刚注销的用户身份重新登录。这是我第一次使用会话,所以我想知道我应该把session_destroy放在哪里,这样当我退出时它实际上会破坏会话。

2 个答案:

答案 0 :(得分:5)

使用session_destroy销毁会话数据,使用session_unset分别清除$_SESSION变量。

此外,在身份验证尝试后调用session_regenerate_id(true)以更改当前会话的ID并销毁仍与旧会话ID关联的会话数据。

答案 1 :(得分:0)

最好的方法是遵循manual。这是删除所有会话变量,会话cookie以及会话文件本身的示例代码:

<?php

// Unset all of the session variables.
$_SESSION = array();

// Delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if( ini_get( "session.use_cookies" ) ) {
    $params = session_get_cookie_params();

    setcookie(
      session_name()
      , ''
      , time() - 42000
      , $params[ "path"     ]
      , $params[ "domain"   ]
      , $params[ "secure"   ]
      , $params[ "httponly" ]
    );
}

// Finally, destroy the session.
if( session_status() === PHP_SESSION_ACTIVE ) { session_destroy(); }