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

时间:2013-11-04 14:05:17

标签: php session

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

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

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

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

第一页导航包含所需的所有SESSION变量,10个会话变量。 在第一页上创建并保存的所有新变量在除第一页之外的任何页面上变为空/空,并且SESSION变量的数量降至9.

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

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

Page Nav 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" }

Page Nav 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" } 

提前致谢!

2 个答案:

答案 0 :(得分:0)

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

从中做出改变,也许这会让你朝着正确的方向前进,看看它出错了。

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

注意:代码未经测试,可能无效,但您可以了解相关信息......

答案 1 :(得分:0)

如果您的会话变量在一个页面上而不在其他页面上运行,则意味着(很可能)您在其他页面上缺少 session_start()