我在 PHP(版本 5.2.10)中处理 session 时遇到问题。我正在使用下面提到的功能进行登录、注销和验证 session 。
login() { session_set_cookie_params(0); session_start(); session_regenerate_id(true); $_SESSION['user_id'] } validate_session() { session_set_cookie_params(0); session_start(); if (isset($_SESSION['user_id']) === FALSE) { session_destroy(); logout(); header("Location: login_page"); } } logout() { session_set_cookie_params(0); session_start(); $_SESSION = array(); setcookie(session_name(), '', time() - 3600, '/'); session_destroy(); }
每个页面首先调用 validate_session() 函数。如果 session 无效,它将重定向到登录页面。 login() 函数用于为用户创建 session 。 当用户点击注销时,会调用logout()函数来销毁 session 。
问题是:logout() 函数随机抛出警告:
警告:session_destroy(): session 对象销毁失败
我很少收到此警告。就像在 20-30 次注销调用中,我得到了一次。有什么想法吗?
我在 windows xp 机器上开发。
更新: session 存储在文件系统中。
路径:C:\WINDOWS\Temp
最佳答案
是否在 validate_session() 之外的其他地方调用了 logout() ?如果不是,问题可能是在 logout() 之前调用 session_destroy()
你可以试试这个:
validate_session()
{
session_set_cookie_params(0);
session_start();
if ( !isset( $_SESSION['user_id'] ) ) {
logout();
header("Location: login_page");
}
}
logout()
{
$_SESSION = array();
setcookie(session_name(), '', time() - 3600, '/');
session_destroy();
}
关于php - 在 PHP 中销毁 session 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6548821/