首先,执行以下常规检查:
- 确保
session_start();
在任何会话被调用之前被调用。因此,一个安全的选择就是将其放在页面的开头,紧接着在开始<?php
声明之后,再放在其他任何地方。还要确保在打开<?php
声明之前没有空格/制表符。 - 在后
header
重定向,使用结束当前的脚本exit();
(其他人也建议session_write_close();
,并session_regenerate_id(true)
,你可以尝试那些为好,但我会用exit();
) - 确保在用于对其进行测试的浏览器中启用了cookie。
- 确保
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”之前的位是您的主目录路径。当然,请确保该文件夹确实存在于您的根目录中。(某些程序在同步时不会上传空文件夹)



