PHP $ _SESSION无法预测未设置

时间:2014-03-29 00:20:22

标签: php session

我发现$ _SESSION显然没有设置,但不同浏览器/ PC之间的效果会有所不同。什么对FF有效,在我的桌面XP上的FF失败,在XP上我的笔记本电脑上运行。

我将脚本减少到最低限度,如下所示。

<?php
session_start();
define("_CMS_SYSTEMNAME", " Stock Reporting");
define("_CMS_TEST" , true);
define("_ROOT"              , $_SERVER["DOCUMENT_ROOT"]) ;
define("_CMS_WELCOME"      , _ROOT."/admin/logon/welcome.htm");
define("_OUTERPAGE",_ROOT.'/admin/adminincludes/adminpages.htm' );


echo "Session Variables After Session Start : "; print_r($_SESSION); echo "<br>";

$Middle="../mydetails/mydetails.htm";
include(_OUTERPAGE);
?>

如果我在文件夹A中运行它(www.mytest.mydomain.co.uk/admin/FolderA/myscript.php) 然后我得到了我的期望:

Session Variables After Session Start : Array ( [abidata] => YTo4Ontz{long string
of data}jAiO319 [Sess_LogonUserID] => 1 [Sess_Manuf] => [Sess_Prod] => 
[Sess_Code] => [Sess_OrderBy] => ) 

如果我在文件夹B中运行它(www.mytest.mydomain.co.uk/admin/FolderB/myscript.php) 然后我得到一个空的结果:

Session Variables After Session Start : Array ( ) 

我尝试过更改文件名,但没有区别,但更改文件夹会有所不同。我的托管支持认为他们无法以不同的方式处理任何一个文件夹,但它似乎只是一个有所作为的文件夹。

我没有办法进一步调查此事。

1 个答案:

答案 0 :(得分:0)

谢谢大家。 找到了解决方案 - 一种解决方案。 我们发现另一个网站存在同样的问题。会话变量未在输入时设置,但如果相同的脚本在不同的文件夹中运行,那么它们就会神奇地存在。 (它与包含文件无关 - 请参阅原始帖子中的脚本 - 当时不是任何文件。)

常见的因素是两个站点都有一个mod来改变会话变量的超时。     setcookie('PHPSESSID',$ _COOKIE ['PHPSESSID'],时间()+ 150000);

这似乎在某种程度上扰乱了特定于文件夹的会话变量的工作。删除cookie可以解决问题。

为什么会这样,我不知道。