如何解决在PHP中重定向后丢失会话的问题?
最近,我遇到了一个非常常见的重定向后丢失会话的问题.在搜索这个网站后,我仍然没有找到任何解决方案(虽然this个最接近).
Update个
我已经找到了答案,我想我应该把它张贴在这里,以帮助任何遇到同样问题的人.
如何解决在PHP中重定向后丢失会话的问题?
最近,我遇到了一个非常常见的重定向后丢失会话的问题.在搜索这个网站后,我仍然没有找到任何解决方案(虽然this个最接近).
Update个
我已经找到了答案,我想我应该把它张贴在这里,以帮助任何遇到同样问题的人.
首先,进行以下常规判断:
session_start();
.因此,一个安全的 Select 是把它放在页面的开头,紧接着在<?php
开头声明之后,然后再做其他事情.还要确保在开始<?php
声明之前没有空格/制表符.header
重定向之后,使用exit();
结束当前脚本(其他人也建议使用session_write_close();
和session_regenerate_id(true)
,您也可以try ,但我会使用exit();
)register_globals
处于关闭状态,您可以在php.ini
文件中判断这一点,也可以使用phpinfo()
.关于如何关闭,请参阅this.$_SESSION
superglobal数组中的键没有被覆盖www.yourdomain.com
重定向到yourdomain.com
不会继续会话..php
(确实如此!)现在,这些是最常见的错误,但如果他们没有做到这一点,问题很可能与你的托管公司有关.如果所有东西都在localhost
上工作,但在远程/测试服务器上不工作,那么这很可能就是罪魁祸首.因此,请查看你的主机Provider 的知识库(也可以try 他们的论坛等).对于FatCow和iPage这样的公司,他们要求您指定session_save_path
.就像这样:
session_save_path('"your home directory path"/cgi-bin/tmp');
session_start();
(将"您的主目录路径"替换为您的实际主目录路径.这通常位于您的控制面板(或等效工具)内,但您也可以在根目录上创建一个test.php
文件,并键入:
<?php echo $_SERVER['SCRIPT_FILENAME']; ?>
"测试前的一点".php'是您的主目录路径.当然,还要确保该文件夹确实存在于根目录中.(某些程序在同步时不上载空文件夹)