奇怪的事情正在发生。我一直在我的本地机器上测试一个 Web 应用程序,它工作得非常好。会话正在完美处理。
最近,当我将应用程序推广到生产环境时,一切正常,除了一些会话变量没有在页面之间保存。
似乎我添加到应用程序中的所有新创建的会话变量都没有保存在页面之间,并且在进行更改之前已经存在的所有变量都保存在页面之间。
我在想也许这与php.ini
安全设置或某些安全设置有关?让我难以解决的原因是页面之间丢失了一些但不是所有的会话。
第一页导航根据需要包含所有会话变量,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" }
提前致谢!