2014-04-28 105 views
0

我正在使用zend框架2,我遇到的問題是我生成一個隨機整數(保存在一個變量中),然後存儲在會話中(作爲一個數組中的鍵,在數組中,我從數據庫中賦值),這是在GET方法中完成的。 然後我返回一個表單,它使用這個隨機值。 我使用視圖上的窗體輸入一些值,然後用戶使用POST方法提交表單。 我遇到的問題是,設置在會話中的隨機值會在POST發生時更改其值,但與該密鑰對應的值不會更改。zend框架2隨機數和會話

我這樣做是爲了避免直接引用一個對象。

我不明白爲什麼值會改變,這是否與zend中的安全性有關?

感謝您的幫助,我的英語水平, 胡里奧

回答

0

對不起你創建在同一個控制器動作並裝入形式(這是通過POST填充提交表單)的隨機整數?

如果是的話,那麼這是發生了什麼 - 創建

  1. 隨機整數。
  2. 此整數作爲「密鑰」存儲在會話數組中。
  3. 來自數據庫的值被設置爲這個「數組鍵」的「值」。
  4. 表單加載,表單被填充並提交。
  5. 窗體的動作屬性與控制器動作相同。
  6. 因此,表單提交後,代碼再次啓動,生成隨機整數(這次是新的),但從數據庫中獲取的值是相同的。

這就是爲什麼只有隨機整數被更改而不是數據庫值。

現在如果上述情況不是這樣的話, please do check whether the random integer generation code is called after form submit or not. If yes then that's the reason for your new integer

我希望它有幫助。

+0

是的,我創建在同一個控制器操作中的隨機整數,但我這麼事端,如: 'SomeAcion { 如果(isPost()){ getSessionValue() }其他{ setSessionValue() } } ' 我沒有理解第二種情況。 感謝您的回覆! –

+0

我的意思是''setSessionValue()'是否在提交後再次被調用。但是不要緊。如果你可以在提交之前和提交之後'print_r()'session變量可能會有所幫助。如果可能的話,在問題中包含數組。 –