亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

ThinkPHP防止重復提交表單的方法實例分析

2024-05-05 00:03:37
字體:
來源:轉載
供稿:網友

本文實例總結分析了ThinkPHP防止重復提交表單的方法。分享給大家供大家參考,具體如下:

為什么會有表單重復的坑

在開發中,如果一個新增或修改的表單,在后臺完成數據庫操作后我們設定的不是跳轉到其他頁面,還是返回本頁面,這時點擊瀏覽器的后退再提交或刷新頁面,會導致form表單重復提交,即這條記錄會被增加或修改兩次。

導致表單重復提交的原因是:第一次提交的表單會被緩存到內存中,直到頁面下次提交或頁面關閉或轉向其他頁面時才消失。在自調用返回時,內存中的數據依然在,這時頁面中的判斷提交的代碼依然可以檢測到提交的值,顧會產生重復提交的效果。

如何解決?

總結網上的解決辦法和自己的測試,可以用以下幾個辦法:

方法1:最簡單:頁面提交后轉到另一個頁面而不是本頁面,舉個栗子,比如你的頁面地址為

http://yourdomain.com/User/Index/login

則該頁面的表單action地址可以為另外的處理地址,如

<form action="{:U('User/Index/check_login')}" method="post">

這樣報錯返回,或者用戶點擊回退按鈕,還是會回到上一個地址,不過這種情況也不保險。還要搭配方法2,一起比較保險

方法2:提交表單后提交按鈕變灰/隱藏提交按鈕

這種方式一般是結合方法1來做的,通過JS來動態監聽用戶的點擊動作,動態將按鈕屬性置成disabeld,即為灰色不可用。代碼如下:

HTML:

<form action="{:U('User/Index/check_login')}" method="post">  <input type="text" name="username" value="" id="username" />  <input type="password" name="userpwd" id="userpwd" />  <input type="submit" name="login_btn" id="login_btn" value="登陸"/></form>

JS:

$().ready(function(){   $("#login_btn").on('click',function(){      $(this).attr('disabled',true);   });});

方法1+方法2 結合后,基本上90%以上的重復提交問題都能解決,但是大劉這里還是要說下第三種方法,即在服務端一勞永逸的解決這個問題

方法3:使用隱藏隨機TOKEN值的方法進行重復提交判斷

首先,在項目的functions.php中添加如下方法

//創建TOKENfunction createToken() {  $code = chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) .    chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE)) . chr(mt_rand(0xB0, 0xF7)) . chr(mt_rand(0xA1, 0xFE));  session('TOKEN', authcode($code));}//判斷TOKENfunction checkToken($token) {  if ($token == session('TOKEN')) {    session('TOKEN', NULL);    return TRUE;  } else {   return FALSE;  }}/* 加密TOKEN */function authcode($str) {  $key = "YOURKEY";  $str = substr(md5($str), 8, 10);  return md5($key . $str);}

在表單頁面form中填入以下HTML代碼

HTML:

<input type="hidden" name="TOKEN" value="{:session('TOKEN')}" />

在頁面展示前調用creatToken()方法生成token,在相應控制器POST請求中 使用 checkToken() 進行判斷是否重復提交

if(IS_POST){$post_token = I('post.TOKEN'); if(!checkToken($post_token)){   $this->error('請不要重復提交頁面',U('User/Index/login')); }}

基本上,這3個方法配合著使用,就能解決ThinkPHP開發中表單重復提交問題,當然,有同學說可以使用ThinkPHP的令牌環機制,這樣其實就更簡單了,TP會默認在表單中生成一個隱藏域,到時候判斷這個隱藏域是否存在以及和session中的值是否想的即可,原理和方法3是一樣的。

PS:今天終于把內容用簡書的markdown編輯器發出來了,果然markdown語法不是蓋的,整個排版都清爽了,不錯不錯。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情va永久在线播放| 日韩中文字幕免费视频| 欧美孕妇性xx| 亚洲精品久久久一区二区三区| 亚洲乱码国产乱码精品精| 一本色道久久综合亚洲精品小说| 亚洲黄页视频免费观看| 亚洲福利影片在线| 亚洲精品之草原avav久久| 色婷婷av一区二区三区在线观看| 一区二区三区高清国产| 北条麻妃在线一区二区| 亚洲国产日韩精品在线| 欧美成人小视频| 一区二区三区久久精品| 亚洲国产一区二区三区在线观看| 午夜精品蜜臀一区二区三区免费| 亚洲黄色av女优在线观看| 欧美日韩亚洲一区二区| 国产亚洲激情视频在线| 国产大片精品免费永久看nba| 国色天香2019中文字幕在线观看| 精品久久久久久中文字幕大豆网| 97国产精品久久| 97视频在线看| 视频在线一区二区| 日韩av日韩在线观看| 欧美电影免费看| 欧美电影免费观看高清| 中文字幕少妇一区二区三区| 精品国产91久久久| 久久久久久久影视| 国产精品视频区| 亚洲国产成人爱av在线播放| 国产主播喷水一区二区| 国产精品69久久| 日韩欧美精品中文字幕| 国产精品久久久久福利| 爽爽爽爽爽爽爽成人免费观看| 日韩欧美一区二区三区| 国产精品综合久久久| 成人久久精品视频| 国产精品伦子伦免费视频| 97欧美精品一区二区三区| 久久影院中文字幕| 亚洲欧美激情精品一区二区| 中文字幕欧美精品日韩中文字幕| 亚洲国产精品福利| 国产精品日韩在线| 亚洲欧美在线免费观看| 亚洲精品在线91| 欧美中文在线观看| 亚洲第一男人av| 91精品久久久久久综合乱菊| 日韩视频在线一区| 亚洲高清久久久久久| 日韩在线高清视频| 国产日韩精品在线观看| 亚洲精品mp4| 美女黄色丝袜一区| 亚洲视频自拍偷拍| 国产精品自拍视频| 国产精品www色诱视频| 精品欧美aⅴ在线网站| www.欧美三级电影.com| 成人淫片在线看| 亚洲高清一二三区| 精品福利在线观看| 精品久久香蕉国产线看观看亚洲| 日韩在线观看精品| 成人免费看吃奶视频网站| 久久国产精品免费视频| 欧美高清视频在线播放| 欧美裸体xxxx极品少妇| 国产日韩精品视频| 一区二区三区四区精品| 伊是香蕉大人久久| 精品国产福利在线| 日韩女优人人人人射在线视频| 亚洲欧洲一区二区三区久久| 不用播放器成人网| 国产成人高清激情视频在线观看| 2020久久国产精品| 欧美电影《睫毛膏》| 国产精选久久久久久| 亚洲欧洲日产国产网站| 日本精品久久久| 欧美一级大片视频| 欧美大片网站在线观看| 一区二区在线免费视频| 成人免费看片视频| 欧美日韩亚洲国产一区| 国产精品三级网站| 久久久久久久999| 国产日韩欧美黄色| 国产欧美日韩免费| 88国产精品欧美一区二区三区| 九九视频这里只有精品| 亚洲黄色有码视频| 欧美第一页在线| 在线看国产精品| 狠狠爱在线视频一区| 欧美高清在线观看| 国产精品一区二区三区毛片淫片| 久久伊人精品视频| 亚洲欧美日韩一区二区在线| 精品视频在线播放免| 国产999精品久久久| 欧美日韩不卡合集视频| 亚洲欧美变态国产另类| 久久久久久久一区二区三区| 欧美电影免费观看大全| 久久天堂av综合合色| 欧洲日韩成人av| 亚洲精品免费一区二区三区| 国产精品极品美女粉嫩高清在线| 91成人国产在线观看| 国产精品国产三级国产aⅴ9色| 日本午夜精品理论片a级appf发布| 亚洲专区在线视频| 久久6免费高清热精品| 亚洲欧美第一页| 日本成人在线视频网址| 日本国产高清不卡| 亚洲伊人久久综合| 欧美激情极品视频| 91精品国产91久久久| 欧美成人第一页| 亚洲国产精品嫩草影院久久| 国内精品久久久久久久久| 日韩欧美亚洲综合| 97精品视频在线播放| 91香蕉亚洲精品| 欧美贵妇videos办公室| 欧美在线视频a| 中文字幕v亚洲ⅴv天堂| 国产精品狠色婷| 日韩在线中文视频| 欧美一级成年大片在线观看| 久久国产精品久久国产精品| 91在线视频成人| 日韩最新av在线| 国产欧美一区二区白浆黑人| 97精品一区二区视频在线观看| 日韩中文字幕网址| 在线精品播放av| 国产精品日韩在线观看| 日韩高清人体午夜| 久久人人爽人人爽人人片av高请| 在线性视频日韩欧美| 成人综合国产精品| 国产视频亚洲视频| 福利一区福利二区微拍刺激| 青青久久aⅴ北条麻妃| 日韩亚洲成人av在线| 国产美女精品视频| 国产在线精品一区免费香蕉| 国产精品成人免费电影| 91免费观看网站| 欧美激情视频给我| 热99精品只有里视频精品| 亚洲成人激情在线观看| 亚洲成人av片| 精品国偷自产在线视频|