2013-11-04 36 views
0

有些奇怪的事情正在進行。我一直在測試我的本地機器上的Web應用程序,它工作得很好。會議正在處理完美。某些會話變量在頁面之間變爲空/空

最近,當我將應用程序升級到生產時,除了不會在頁面之間保存會話變量的以外,一切正常。

看起來好像我添加到應用程序中的所有新創建的會話變量都不會保存在頁面之間,也不會保存在更改之前已經存在的所有頁面之間,而是保存在頁面之間。

我在想也許它與php.ini或某種安全設置有關?是什麼讓我很難排除故障,是有些但不是所有的SESSION都在頁面之間丟失。

第一頁nav包含所有需要的SESSION變量,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" } 

提前致謝!

+0

沒有相關的代碼塊。我正在做一個簡單的'session_start()','$ _SESSION ['test'] ='hello''。它保存在頁面導航的第一頁,但是在其他頁面上丟失。這個問題只存在於生產中,而不是在測試中。 – AnchovyLegend

+0

你使用平衡器(幾臺物理服務器),或者你只有一臺服務器? –

+0

只有一臺服務器。 – AnchovyLegend

回答

0

您是否考慮將這些值存儲在input type="hidden"字段中作爲備份計劃?

從這個方面開始工作,也許這會推動你朝着正確的方向發展,看看它出錯的地方。

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

注:代碼未經測試,可能會無法正常工作,但你得到的圖片...

+0

噢,讓我們讓會議可用於劫持..如果有人會編輯字段的值會怎麼樣?那會帶我們到哪裏? –

+0

這只是一個建議,並沒有說我們*有*使用這種方法。最初的意圖是驗證信息正在發送;如果這不起作用,問題可能是會話本身,而不是數據。 – davewoodhall

0

如果你有一個頁面上的工作會話變量,而不是對他人就意味着(最有可能的是)您在其他頁面上缺少session_start()

+0

所有頁面都包含'session_start()'。這不是問題。不管怎麼說,多謝拉。 – AnchovyLegend

+0

要複製你的問題 - 創建2個php文件來顯示你的場景,並更新一個問題,因爲problam可能完全在你想象的其他地方。 – Artur

+0

請參閱編輯,我添加了一些額外的信息。 – AnchovyLegend