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