在提交表單的時候,可能遇到網速等導致頁面突然載入變慢,使用者重複地點選提交按鈕,將在資料庫產生多條資料,導致不可控情況。
比如下面的情況就會導致表單重複提交:
點選提交按鈕兩次。
點選重新整理按鈕。
使用瀏覽器後退按鈕重複之前的操作,導致重複提交表單。
使用瀏覽器歷史記錄重複提交表單。
瀏覽器重複的http請求。
網頁被惡意重新整理。
下面是幾種解決的方法:
一:利用js設定按鈕點選後變成灰色
$(document).ready(function(),100)
};});
二:利用session
載入提交的頁面時候,生成乙個隨機數,
$code = mt_rand(0,1000000);
儲存在表單的隱藏輸入框中:
< input type="
hidden
" name="
code
" value="
「>
在接收頁面的php**如下:
<?php
session_start();
if(isset($_post['
code
'])) else
}?>
三:利用cookies
原理和session差不多,但是cookies一旦使用者瀏覽器禁用cookies,這功能就失效了
if(isset($_post['
submit
']))
if(isset($_cookie["
tempcookie
"]))
四:利用header函式跳轉
一旦使用者點選提交按鈕,處理完資料後跳到其他頁面
if (isset($_post['
submit
']))
五:利用資料庫來新增約束
直接在資料庫裡新增唯一約束或建立唯一索引,一旦發現使用者重複提交了,直接丟擲警告或者提示,
或者只處理第一次提交的資料,這是最直接有效的方法,要求前期的資料庫設計和架構要考慮周全
php解決和避免form表單重複提交的幾種方法
前言 為什麼要避免form表單被重複提交呢?因為我們不想讓我們的伺服器重複處理沒必要的資料,同時我們也是避免我們的資料庫產生重複的資料,避免表單重複提交也是讓我們的 更安全的一種表現。先看一下有哪些情況下回導致表單重複提交呢,知道哪些情況下可能會出現表單重複提交就可以從根源處理表單重複提交的情況了。...
PHP 表單(FORM)例項
php 的表單處理往往是php應用的第乙個學習單元。學好表單處理,也就開始了php實用之旅。先看 和瀏覽結果,然後一一解釋 第一張圖是html檔案,當然也可以直接用.php做字尾,效果是一樣的。我這裡只擷取了body的部分。表單屬於html的內容,但和php的關聯相當緊密。表單的標籤就是 form ...
解決PHP接受form表單限制1000個變數的問題
問題現象 php開發過程中post方式提交乙個大於1000個核取方塊的form表單時,發現提交的後面部分內容被截斷,但是少於1000時就正常。分析 1.首先確認表單正確,發現前段的核取方塊數量是夠的但是傳到後台就被部分截斷,這時候應該就是後台接受的問題 2.兩種情況 第一種是對表單提交資料的大小有限...