某些会话变量在页面之间变为空/空


Some Session variables become empty / null between pages

奇怪的

事情正在发生。我一直在本地机器上测试一个 Web 应用程序,它运行良好。会话得到完美处理。

最近,当我将应用程序提升到生产环境时,除了一些会话变量未在页面之间保存之外,一切正常。

似乎我添加到应用程序的所有新创建的会话变量都没有保存在页面之间,而在进行更改之前已经存在的所有会话变量都在页面之间保存。

我在想也许它与php.ini或某些安全设置有关?让我难以排除故障的原因是,一些但不是全部的会话在页面之间丢失了。

第 1 页导航根据需要包含所有会话变量,10 个会话变量。在第一页上创建和保存的所有新变量在除第一页以外的任何页面上变为空/空,并且 SESSION 变量的数量下降到 9。

我非常感谢有关导致此问题的原因以及如何解决此问题的任何建议!

注意:最后四个变量是新创建的,所有其他变量在新更改之前都已存在。

页面导航 1:

echo 'ID: ' . session_id() . ' <br/><br/>';
        echo 'SAVE PATH: ' . session_save_path() . ' <br/><br/>';
        var_dump($_SESSION);

输出

ID: 8rd3paua61caaqd09ahoc0km42
SAVE PATH: D:'php5'session
array(10) { ["termstamp"]=> int(1383577150) ["timestamp"]=> int(1383577150) ["tm"]=> int(1383577150) ["userid"]=> string(6) "153355" ["authenticated"]=> bool(true) ["auth"]=> bool(true) ["joinMeta"]=> string(0) "" ["selectMeta"]=> string(0) "" ["search_queryyy"]=> array(12) { [0]=> string(27) "sec.lastname LIKE '%smith%'" [1]=> string(0) "" [2]=> string(0) "" [3]=> string(0) "" [4]=> string(0) "" [5]=> string(0) "" [6]=> string(0) "" [7]=> string(43) "sec.has_status != 99 && sec.has_status != 6" [8]=> string(0) "" [9]=> string(0) "" [10]=> string(0) "" [11]=> string(0) "" } ["testtttttt"]=> string(17) "SOMETHING INTO IT" }

页面导航 2 及更高版本:

echo 'ID: ' . session_id() . ' <br/><br/>';
        echo 'SAVE PATH: ' . session_save_path() . ' <br/><br/>';
        var_dump($_SESSION); 

输出:

ID: 8rd3paua61caaqd09ahoc0km42
SAVE PATH: D:'php5'session
array(10) { ["termstamp"]=> int(1383577150) ["timestamp"]=> int(1383577150) ["tm"]=> int(1383577150) ["userid"]=> string(6) "153355" ["authenticated"]=> bool(true) ["auth"]=> bool(true) ["joinMeta"]=> string(0) "" ["selectMeta"]=> string(0) "" ["search_queryyy"]=> NULL ["testtttttt"]=> string(17) "SOMETHING INTO IT" } 

提前感谢!

您是否考虑过将这些值存储在input type="hidden"字段中作为备份计划?

从中找出一个变化,也许这会把你推向正确的方向,看看哪里出了问题。

<?php
    foreach ($_SESSION as $key=>$value)
    {
?>
       <input type="hidden" name="<?php echo $key; ?>" value="<?php echo $value; ?>" />
<?php
    }
?>

注意:代码未经测试,可能无法正常工作,但你得到了图片...

如果你的会话变量在一个页面上工作,而不是在其他页面上工作,这意味着(很可能)你在那些其他页面上缺少session_start()。