1. 程式人生 > >防止表單重複提交的幾種策略

防止表單重複提交的幾種策略

表單重複提交在客戶端和伺服器端都會引發一些問題,一方面有些瀏覽器會彈出確認是否確認重新提交表單,另一方面伺服器端也可能會重複新增資料。

在瀏覽器端,當用戶點選提交一個表單,而伺服器沒有對提交做重定向,當用戶輸入資訊有誤提交後依然返回的是提交的頁面,或者在同一個頁面顯示提交成功的資訊,如果使用者點選重新整理(F5),此時瀏覽器的預設行為是重複前一次操作(重新整理的意義瀏覽器理解為重複上一次請求,只不過form提交是一次特殊的,重定向相當於讓瀏覽器執行了一次跳轉,再重新整理就不是提交表單了),所以瀏覽器會彈出警告要求確認是否重新提交表單,因為沒有重定向很可能是提交未成功。

在伺服器端,如果有重複的請求,可能會多次處理重複的請求,導致插入重複的資料等,引發一些錯誤。

對此有如下解決方法:

1、在提交後執行頁面重定向

當用戶提交了表單後,執行一個客戶端的重定向,轉到提交成功資訊頁面,甚至提交錯誤留在同一個頁面也可以用重定向(沒必要),這能避免使用者按F5導致的重複提交,也不會出現瀏覽器表單重複提交的警告,也能消除按瀏覽器前進和後退按導致的同樣問題。

2、在session中存放一個特殊標誌

當表單頁面被請求時,生成一個特殊的字元標誌串,存在session中,同時放在表單的隱藏域裡。接受處理表單資料時,檢查標識字串是否存在,並立即從session中刪除它,然後正常處理資料。如果發現表單提交裡沒有有效的標誌串,這說明表單已經被提交過了,忽略這次提交。這使web應用有了更高階的XSRF保護。

3、在資料庫裡新增約束

在資料庫裡新增唯一約束或建立唯一索引,防止出現重複資料。這是最有效的防止重複提交資料的方法。

相關推薦

Jsp 防止重複提交方案

SP避免Form重複提交的三種方案  1) javascript ,設定一個變數,只允許提交一次。    <script language="javascript">    var checksubmitflg = false;    function

防止重複提交策略

表單重複提交在客戶端和伺服器端都會引發一些問題,一方面有些瀏覽器會彈出確認是否確認重新提交表單,另一方面伺服器端也可能會重複新增資料。 在瀏覽器端,當用戶點選提交一個表單,而伺服器沒有對提交做重定向,當用戶輸入資訊有誤提交後依然返回的是提交的頁面,或者在同一個頁面顯示提交成

防止重複提交方法總結

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/Warpar/article/details/72917924 1、JavaScript防止表單重複提交(主要用於網路延遲情況下使用者點選多次submit按鈕導致表單重複提

防止重複提交的八簡單有效的策略

表單重複提交是在多使用者Web應用中最常見、帶來很多麻煩的一個問題。有很多的應用場景都會遇到重複提交問題,比如: 點選提交按鈕兩次。 點選重新整理按鈕。 使用瀏覽器後退按鈕重複之前的操作,導致重複提交表單。 使用瀏覽器歷史記錄重複提交表單。 瀏覽器重複的HTTP請求。

Struts2中防止重複提交的兩方式

防止表單重複提交,這是個很重要的知識點,而且很有用。當用戶提交了一個表單,此時,位址列顯示的是處理這個表單的Action的地址,若此時重新整理,則會重新發送一次表單資料,即又進行了一次提交,若這個Action是用來處理使用者註冊的,那麼重複提交會再一次向資料庫中插入之前已

防止重複提交的4方法

1.背景與介紹: 平時開發的專案中可能會出現下面這些情況: 由於使用者誤操作,多次點選表單提交按鈕。 由於網速等原因造成頁面卡頓,使用者重複重新整理提交頁面。 黑客或惡意使用者使用postman等工具重複惡意提交表單(攻擊網站)。 這些情況都會導致表單重複提交,造成資料重複,增加伺服器負載,嚴重甚至會造成

利用session防止重複提交

使用者在提交表單的過程中,由於網路等原因,可能重複點選提交按鈕,向資料庫重複寫入或者讀取資料,為了防止這種情況發生。   解決方式: 1.客戶端防表單重複提交,在前端使用javascript限制。但是在前端並不能完全限制,比如下網頁原始碼更改,重複重新整理等。 2.服務端防

Java 使用Token令牌防止重複提交

Token驗證詳解 參考來源:https://blog.csdn.net/woshihaiyong168/article/details/52857479 使用Token令牌防止表單重複提交 參考來源:https://blog.csdn.net/cuiyaoqiang/article/d

用session防止重複提交

session案例1:防止表單重複提交   原理:     1,表單頁面由servlet程式生成,servlet為每次產生的表單頁面分配一個唯一的隨機標識號,並在FORM表單的一個隱藏欄位中設定這個標識號,同時在當前使用者的Session域中儲存這個標識號。

struts2-註解&防止重複提交

註解: 註解沒有分號 註解首字母是大寫,因為註解與類、介面是同一級的。一個註解後臺對應一個@interface類 同一語法單元,同一註解只能使用一次 在註解與語法單元間可以隔若干空行、註釋等非程式碼內容 在struts2中使用註解,主要完成對Act

防止重複提交---筆記

1. 防止表單重複提交 1.在使用者訪問頁面(設為頁面A)時session設定一個屬性(設為check) 值為 md5(當前時間)設為checkvalue, 且在表單中設定隱藏域 value為checkvalue 2.當用戶提交 在servlet裡檢測se

自定義註解攔截器,防止重複提交

1.自定義註解 package com.paotui.util; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import ja

防止重複提交

問題:什麼是表單重複提交?                     regist.jsp----->RegistServlet         表單重複提交 危害: 刷票、 重複註冊、帶來伺服器訪問壓力(拒絕服務)                  解決方案:     

session案例:防止重複提交、一次性校驗碼

session案例1:防止表單重複提交 原理: 1,表單頁面由servlet程式生成,servlet為每次產生的表單頁面分配一個唯一的隨機標識號,並在FORM表單的一個隱藏欄位中設定這個標識號,同時在當前使用者的Session域中儲存這個標識號。 2,當用戶提交FOR

laravel中防止重複提交的綜合解決方案

怎樣防止表單重複提交,通過搜尋引擎能搜到很多結果,但很零散,系統性不強,正好前幾天做了這個功能,決定記錄下來。 根據資料流向的過程,分別在三個“點”控制表單的重複提交,如下: 第一,使用者觸發submit時,前端js控制提交按鈕的狀態,使用者觸發提交即設

Spring MVC攔截器+註解方式實現防止重複提交

表單重複提交是在多使用者Web應用中最常見、帶來很多麻煩的一個問題。有很多的應用場景都會遇到重複提交問題,比如: 1.點選提交按鈕兩次。2.點選重新整理按鈕。3.使用瀏覽器後退按鈕重複之前的操作,導致重複提交表單。4.使用瀏覽器歷史記錄重複提交表單。5.瀏覽器重複的HTTP

SSH框架之Struts的常用技術——資料回顯、防止重複提交

Struts2的常用三大技術: 1、資料回顯 2、模型驅動 3、防止表單重複提交 一、資料回顯: 1、資料回顯,必須要用struts標籤! 2、程式碼講解: 1)Action: //

PHP防止重複提交方法

下面的情況就會導致表單重複提交:       點選提交按鈕兩次。       點選重新整理按鈕。       使用瀏覽器後退按鈕重複之前的操作,導致重複提交表單。       使用瀏覽器歷史記錄重複提交表單。       瀏覽器重複的HTTP請求。      

session token 防止重複提交

本文正是通過使用session以及在session中加入token,來驗證同一個操作人員是否進行了併發重複的請求,在後一個請求到來時,使用session中的token驗證請求中的token是否一致,當不一致時,被認為是重複提交,將不准許通過。     整個流程可以由如下

JS防止重複提交

/*方法1:設定一個全域性JS變數*/ var submited = false; function checkSubmit() { if (!submited) { su