day*_*oli 122 php session redirect shared-hosting session-cookies
如何在PHP中重定向后解决丢失会话的问题?
最近,我遇到了一个非常常见的重定向失败会话问题.在搜索了这个网站后,我仍然找不到解决方案(虽然这是最接近的).
更新
我找到了答案,我想我会在这里发布,以帮助遇到同样问题的人.
day*_*oli 186
首先,执行以下常规检查:
session_start();在调用任何会话之前调用.所以一个安全的赌注就是把它放在你的页面的开头,紧接在开放<?php声明之后的任何其他事情.还要确保在打开<?php声明之前没有空格/制表符.header重定向,使用结束当前的脚本exit();(其他人也建议session_write_close();,并session_regenerate_id(true),你可以尝试那些为好,但我会用exit();)register_globals关闭,您可以在php.ini文件上检查并使用phpinfo().请参阅本关于如何将其关闭.$_SESSION超级全局数组中的键不会被覆盖www.yourdomain.com到yourdomain.com不会进行会话..php(它发生!)现在,这些是最常见的错误,但如果他们没有做到这一点,问题很可能与您的托管公司有关.如果一切正常,localhost但远程/测试服务器上没有,那么这很可能是罪魁祸首.因此,请检查您的托管服务提供商的知识库(也尝试他们的论坛等).对于像FatCow和iPage这样的公司,他们要求您指定session_save_path.像这样:
session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();
(将"您的主目录路径"替换为您的实际主目录路径.这通常在您的控制面板(或等效的)中,但您也可以test.php在根目录中创建一个文件并键入:
<?php echo $_SERVER['SCRIPT_FILENAME']; ?>
'test.php'之前的位是您的主目录路径.当然,请确保该文件夹实际存在于根目录中.(某些程序在同步时不上传空文件夹)
小智 22
你应该在标题调用后使用"exit"
header('Location: http://www.example.com/?blabla=blubb');
exit;
小智 13
我尝试了所有可能的解决方案,但没有一个适合我!当然,我正在使用共享托管服务.
最后,我通过在重定向头中使用'relative url'解决了这个问题!
header("location: http://example.com/index.php")
使会话cookie无效
header("location: index.php")
像魅力一样工作!
小智 5
我遇到了同样的问题。突然之间,我的一些会话变量不会持续到下一页。问题原来是(在 php7.1 中)您的标题位置中不能包含 WWW,例如https://mysite。没问题,https://www.mysite。将丢失该页面会话变量。不是全部,只是那一页。
小智 5
当我在 header() 函数中使用相对路径“dir/file.php”时对我有用。我认为当您使用完整的 url 重定向时,由于某种原因没有保存会话......
//Does retain the session info for some reason
header("Location: dir");
//Does not retain the session for some reason
header("Location: https://mywebz.com/dir")
| 归档时间: | 
 | 
| 查看次数: | 171129 次 | 
| 最近记录: |