2009-01-19 102 views
2

假設您有頁面A,它是Web應用程序的「主頁」頁面。假設有一個包含表單的第二個頁面B.成功處理表單後,用戶將返回到頁面A.如果需要顯示上一個操作的成功消息(成功的表單提交),獲取該消息的最佳顯示方式是什麼?在表單成功頁面上顯示消息

我已經將範圍縮小到這一點:

  1. 傳遞一個信息鍵頁面A.頁面A然後將使用鍵從什麼地方得到的消息。

  2. 將消息傳遞給頁面A.然而,這似乎打開了網站的XSS和什麼不是。

  3. 處理表單時,將會話範圍中的消息存儲在重定向到頁面A之前的會話範圍內。然後頁面A可以檢索&從會話中刪除消息並將其顯示在屏幕上。

我錯過了什麼嗎?什麼是完成這項任務的首選方式?

回答

0

我通常使用方法3.如果頁面想要在重定向後顯示消息,它會設置一個會話變量。然後,代碼(位於我的基類中)(針對每個頁面請求執行),檢查是否有要顯示的消息,顯示它並清空消息會話變量。

2

我絕對不會爲這樣的任務使用會話。這是不負責任的,破壞了邏輯流程。相反,您可以有一個預先確定的錯誤列表,只需通過查詢參數傳遞錯誤代碼即可。如果您確實需要發送新的自定義數據,那麼我建議您最好通過GET或POST發送它。

+0

它是如何不負責任的?而且,它是如何摧毀邏輯的,而不是使用傳入URL的密鑰來檢索消息? – IaCoder 2009-01-19 20:22:36

+0

如果用戶直接進入該頁面,該消息仍然最有可能。我不確定這個網頁是什麼,所以很難說你會遇到什麼問題。 – 2009-01-19 20:41:09

1

完全同意d03boy出於所有相同的原因。在用戶開始打開多個窗口的時候,在會話中存儲特定於某個視圖的數據會非常糟糕。

就我個人而言,我總是使用您在此處描述的方法1。

0

我同意d03boy和pilif:方法3不是一個很好的會話使用,如果有幾個窗口會被搞亂,正如你所說的,方法2會打開XSS。

將不同的消息存儲在文件或數據庫中,並將密鑰傳遞給腳本。如果您需要自定義消息,請通過發佈請求傳遞數據(並驗證它以防止XSS)並使用模式來替換消息中的值。