php会话变量不能在index.php上运行

时间:2013-07-15 00:45:02

标签: php session session-variables

我有一些$_SESSION变量在我的整个网站上正常运行:

print_r($_SESSION)打印

Array ( [first_name] => Daniel [last_name] => Jameson [email] => email@gmail.com [logged_in] => 1 )

但是,由于某些原因,index.php中的变量都未设置:

print_r($_SESSION)打印

Array ( )

如果我将index.php重命名为index2.php,它们都可以正常工作!这意味着代码本身很好,但由于某种原因,index.php的文件名/路径是问题。

我最近被列入了mod_security块的白名单,这可能是问题的原因吗?也许与文件权限有关?这超出了我的专长......

修改

如果我尝试像.../index.php?blah这样的网址,它会按预期工作。我认为这是一个缓存问题,我补充道:

header('Cache-Control: no-store, private, no-cache, must-revalidate');     // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);  // HTTP/1.1
header('Pragma: public');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');                  // Date in the past  
header('Expires: 0', false); 
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header ('Pragma: no-cache');

但是index.php仍然取消$_SESSION个变量。即使我也清除了缓存。

1 个答案:

答案 0 :(得分:0)

首先确保在代码中的所有内容之前设置了函数session_start()。 无法设置$ _SESSION的原因: 在标题之前设置$ _SESSION时。所以你应该把函数session_write_close()放在标题之前。 或者您的缓存有问题。