Session PHP会话变量在重定向后为空
我已经在我的本地机器上写了一个应用程序,在我把这个应用程序上传到一个免费的托管服务器之前,一切都很完美。问题是在这段代码中设置的所有会话变量:Session PHP会话变量在重定向后为空,session,redirect,shared-hosting,Session,Redirect,Shared Hosting,我已经在我的本地机器上写了一个应用程序,在我把这个应用程序上传到一个免费的托管服务器之前,一切都很完美。问题是在这段代码中设置的所有会话变量: if($user) { // regenerate session for safety purposes //session_regenerate_id(true); //set some session vars and redirect $_SESSION['user_id']
if($user) {
// regenerate session for safety purposes
//session_regenerate_id(true);
//set some session vars and redirect
$_SESSION['user_id'] = $user->id;
$_SESSION['first_name'] = $user->first_name;
$_SESSION['admin'] = $user->admin;
return true;
}
当我打印这些代码时,在重定向后变为空(所有这些代码都是登录系统的一部分):
Authentifiacation::login($user, $remember_me);
Flash::addMessage('Successfully logged in', Flash::SUCCESS);
// redirect user to the page which he originally requested
static::redirect('/admin/home/index');
exit();
我刚刚得到print\r($\u SESSION)
的Array()
但是,当我完全在设置后打印它们时,它们都存在。
我使用的是简单的MVC框架,在localhost上一切都很好。我已经试过了:
1) 在脚本的不同部分添加session\u start()
,尽管它位于前面的controller index.php中
2) 会话\u在设置变量后重新生成\u id()
3) exit()
afterredirect()
4) 用于将register\u globals
设置为off的代码
5) 删除.htaccess
还有其他可能的原因吗?在您的机器上是否关闭了注册表全局设置?@vaso123,是的,我试图在.htaccess文件中通过php\u flag register\u globals off
执行此操作,后来发现,在我的服务器上默认情况下是关闭的。正如我提到的,在我的本地机器上一切都很完美。这个问题只出现在life服务器上。您使用的是什么版本的PHP,本地和服务器?@EdelmarZiegler,我在本地机器上使用PHP7.0.15版本,在远程服务器上使用PHP7.1.16版本。你认为这就是问题的原因吗?@Kirill是的,我认为。我发现了你的问题,因为我遇到了同样的问题,一个曾经正常工作的脚本刚刚停止,我唯一改变的是从7.0.x升级到7.1.x。降级至7.0后,问题消失了。在我的例子中,我将脚本从分离到用户,终止连接,但在长时间执行之后(fastcgi_finish_请求)。我使用会话在脚本之间交换进度。我知道,我应该用数据库。。。我确信此函数是否是会话中断的原因,但降级问题已得到解决。