激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - ThinkPHP 防止表單重復(fù)提交的方法

ThinkPHP 防止表單重復(fù)提交的方法

2019-12-10 13:05PHP教程網(wǎng) PHP教程

防止表單重復(fù)提交有很多種方法,其不外乎,客戶端腳本防止刷新,服務(wù)端token驗(yàn)證等等,thinkphp內(nèi)置了表單token驗(yàn)證,可以方便的防止表單重復(fù)提交

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

用戶提交表單以后,點(diǎn)擊瀏覽器后退按鈕返回表單頁面,這個時候?yàn)g覽器會直接從緩存中取出頁面,因此token驗(yàn)證一定是通不過的。

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

解決辦法是在http頭中設(shè)置Cache-Control: no-cache, no-store。然而我嘗試了無論是在頁面head中添加 <meta http-equiv="Cache-Control" content="no-cache, no-store"> 還是在Action中輸出 header("Cache-control: no-cache, no-store") 都無效。

 

ThinkPHP 防止表單重復(fù)提交的方法

 

查找了很久,發(fā)現(xiàn)問題出在ThinkPHP的模板渲染機(jī)制上,打開 ThinkPHP/Lib/Think/Core/View.class.php 看第173行

  1. header("Cache-control: private");  //支持頁面回跳 

原來TP為了支持頁面回跳,強(qiáng)制在每個模板輸出之前都發(fā)送了一個Cache-control: private的頭,這可真是幫了倒忙了。

把這行注釋掉,刪除TP核心緩存,再試一次,發(fā)現(xiàn)HTTP響應(yīng)頭成功改變了

 

ThinkPHP 防止表單重復(fù)提交的方法

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 色视频91| 国产精品爱久久久久久久 | 亚洲一区二区中文字幕在线观看 | 欧美男女爱爱视频 | 欧美日韩中文字幕在线视频 | 亚洲福利视 | 国产毛片在线 | 国产a级网站 | 国产一级二级视频 | 国产a级网站 | 91精品国产免费久久 | 在线观看免费污视频 | 久久亚洲成人网 | 久久久久亚洲国产精品 | 99精品在线观看 | 男女亲热网站 | 国产成人精品午夜视频' | 久久久久夜色精品国产老牛91 | 91 在线| 免费一区二区三区 | 成人短视频在线观看 | 久久老司机精品视频 | 欧美三级毛片 | 国产午夜免费不卡精品理论片 | 国产三级国产精品国产普男人 | 99久久久国产精品免费观看 | 国产99页 | av成人在线免费观看 | 老女人碰碰在线碰碰视频 | 国产亚洲综合一区二区 | 欧美一级黄色片在线观看 | 精品中文字幕视频 | 日韩色视频在线观看 | 亚洲综合视频网站 | 99精品欧美一区二区 | 老师你怎么会在这第2季出现 | 日本精品久久久一区二区三区 | 午夜久久视频 | 99精品国产小情侣高潮露脸在线 | 国产日产精品一区二区三区四区 | 久久久久久免费免费 |