gpt4 book ai didi

php - 在 PHP 中销毁 session 时出错

转载 作者:可可西里 更新时间:2023-11-01 12:59:25 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com