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

Php 某些会话变量在页面之间变为空/空,php,session,Php,Session,有些奇怪的事情正在发生。我一直在本地机器上测试一个web应用程序,它运行得非常好。会话处理得很好 最近,当我将应用程序升级到生产环境时,除了一些会话变量没有保存在页面之间之外,一切都很好 似乎我添加到应用程序中的所有新创建的会话变量都没有保存在页面之间,而在进行更改之前已经存在的所有会话变量都保存在页面之间 我在想它可能和php.ini或者一些安全设置有关?让我很难排除故障的是,页面之间丢失了一些但不是所有的会话 第1页nav包含所需的所有会话变量,10个会话变量。 在第一个页面上创建并保存的所

有些奇怪的事情正在发生。我一直在本地机器上测试一个web应用程序,它运行得非常好。会话处理得很好

最近,当我将应用程序升级到生产环境时,除了一些会话变量没有保存在页面之间之外,一切都很好

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

我在想它可能和
php.ini
或者一些安全设置有关?让我很难排除故障的是,页面之间丢失了一些但不是所有的会话

第1页nav包含所需的所有会话变量,10个会话变量。 在第一个页面上创建并保存的所有新变量在第一个页面以外的任何页面上都变为null/空,会话变量的数量降至9

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

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

页面导航1:

echo 'ID: ' . session_id() . ' <br/><br/>';
        echo 'SAVE PATH: ' . session_save_path() . ' <br/><br/>';
        var_dump($_SESSION);
页面导航2及更高版本:

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

提前谢谢

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

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

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


如果会话变量在一个页面上工作,而在其他页面上不工作,这意味着(很可能)在其他页面上缺少会话_start()

没有相关的代码块。我正在做一个简单的
会话\u start()
$\u会话['test']='hello'
。它保存在页面导航的第一页,但在任何其他页面上丢失。此问题只存在于生产环境中,而不存在于测试环境中。您是使用balancer(几个物理服务器)还是只有一台服务器?您的所有php脚本中是否都有session_start()?那么,您的PHPSESSID cookie值是否会更改?当我执行echo
session_id()时
在第一个页面上它输出会话ID,在第二个页面上它什么都没有,但仍然保留旧的会话变量,而不是我创建的新会话变量。会话变量保存在页面之间,但在第一个nav页面之后,变量的内容变为空/空。所有页面都包含
session\u start()
。这不是问题所在。无论如何,谢谢。要复制您的问题,请创建2个php文件以显示您的场景并更新问题,因为problam可能位于完全不同于您想象的位置。您是否有自定义会话处理程序或使用默认会话处理程序?可能它们是自定义的(我认为是),但是,测试服务器上使用了完全相同的自定义会话处理程序,但不存在此问题。@AnchovyLegend:对于测试,请1)重新启动浏览器以创建另一个会话2)在第1页中-在会话开始()后添加未设置($会话),然后添加一些$会话['blabla']=。。。并显示结果。如果这些不同-我相信你的课程不起作用。。让我们将会话设置为可用于劫持。。如果有人要编辑字段的值呢?这将把我们带到哪里?这只是一个建议,并没有说我们必须使用这种方法。最初的目的是验证信息是否已发送;如果这不起作用,问题可能是会话本身,而不是数据。
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" } 
<?php
    foreach ($_SESSION as $key=>$value)
    {
?>
       <input type="hidden" name="<?php echo $key; ?>" value="<?php echo $value; ?>" />
<?php
    }
?>