首頁 > 後端開發 > php教程 > thinkpad s230u twist ThinkPHP 防止表單重複提交的方法

thinkpad s230u twist ThinkPHP 防止表單重複提交的方法

WBOY
發布: 2016-07-29 08:46:29
原創
1413 人瀏覽過

然而有一種情況,是防止不了的:

用戶提交表單以後,點擊瀏覽器後退按鈕返回表單頁面,這個時候瀏覽器會直接從快取中取出頁面,因此token驗證一定是通不過的。

網上有許多種辦法可以繞過這個問題,例如用location.replace()方法來替換當前歷史記錄,但是這樣仍然有瑕疵。極端的情況,若使用者在頁間切換多次,那麼多點幾次後退按鈕很可能又回到了上一個表單頁面。

解決方法是在http頭中設定Cache-Control: no-cache, no-store。然而我嘗試了無論是在頁面head中添加 ThinkPHP 防止表单重复提交的方法

查找了很久,發現問題出在ThinkPHP的模板渲染機制上,打開ThinkPHP/ Lib/Think/Core/View.class.php 看第173行

原來TP為了支援頁面回跳,強制在每個模板輸出之前都發送了一個Cache-control: private的頭,這可真是幫了倒忙了。
header("Cache-control: private");
把這行註解掉,刪除TP核心緩存,再試一次,發現HTTP回應頭成功改變了

以上就介紹了thinkpad s230u twist ThinkPHP 防止表單重複提交的方法,包括了thinkpad s230u twist方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板