2013-11-04 30 views
0

我有一個使用郵件功能的PHP表單腳本。基本上你會寫你的電子郵件和電子郵件來發送頁面上的建議,然後點擊發送。PHP表格記得以前的信息

問題出在這裏,一旦你發送了建議,你可以再次發送,這次刷新同一頁面!

如何讓腳本不記得先前輸入的信息由同一用戶? flush()或其他東西。該腳本放置在頁面的中間,所以我不希望頁面在這個php表單之後執行。

編輯: 謝謝你們的回答,有沒有任何腳本可以用於在mysql的幫助下存儲/驗證IP?或者只是一個「純文本數據庫」?

+0

http://en.wikipedia.org/wiki/Post/Redirect/Get – CBroe

回答

0

這是導致此行爲的Web瀏覽器,而不是表單 - 當刷新頁面是表單提交的結果時,大多數瀏覽器都會提供重新提交數據。

通常的「修復」是將數據提交到中間頁面,然後將該人員重定向到他們正在查看的頁面 - 這樣他們將不得不返回一頁以及刷新並點擊「是」 ,我想重新提交數據「。

爲了完整性,考慮只允許特定的IP通過跟蹤IP在數據庫中的最後一次使用,每x秒/分鐘使用「發送給朋友」功能一次。

爲了獲得更多的完整性,請避免給定的收件人每天不止一次被告知頁面,或者其他內容。

+0

謝謝你的回答。 – user197163

0

兩個不同的東西,你可能會遇到:

,當你去到您的窗體先前輸入的信息remebered的事實。這通常是網頁瀏覽器(和/或安裝的插件)的功能,而不是你的腳本/表單的問題。這與您的瀏覽器爲您記住登錄憑證的方式類似。

通常情況下,這並不是什麼大問題,但是每次載入表單時都可以通過爲輸入字段生成唯一的名稱來防止該問題。

<input type=text name=email lenght=40>... 

就變成

<inut type=hidden uniqueID=$something> 
<input type=text name=email-$something lenght=40>... 

,然後使用UNIQUEID表單中的處理器重建所有其他字段名處理表單時。

你的第二個問題是,你的表單處理器允許兩次或更多的處理相同的內容。常見問題的常見問題。

傳統的策略是在處理表單內容後將瀏覽器重定向到成功/錯誤頁面,可以重新加載而不會受到任何懲罰。 form - > formhandler page(PHP)處理表單內容併發送http重定向 - >成功/錯誤頁面。

或者更常見的是,現在存儲上述表單的唯一ID(例如,在數據庫中)並拒絕第二次處理。

+0

謝謝你的回答。 – user197163