防止表單的重複提交

場景有三種:javascript

1:在網絡延遲的狀況下讓用戶有時間點擊屢次submit致使重複提交java

2:表單提交後點擊刷新按鈕致使重複提交瀏覽器

3:提交後,點擊瀏覽器的後退而後再次提交服務器

解決的思路有經常使用的幾種:網絡

一、經過JS,提交表單以後將按鈕設置爲不可用。session

 <script type="text/javascript">
        var isCommitted = false;//表單是否已經提交標識,默認爲false
        function dosubmit(){
            if(isCommitted==false){
                isCommitted = true;//提交表單後,將表單是否已經提交標識設置爲true
                return true;//返回true讓表單正常提交
            }else{
                return false;//返回false那麼表單將不提交
            }
        }
    </script>
spa

二、或者在提交表單的js中設置一個變量做爲標識,默認爲false,表單提交以後就愛那個標識改成trueorm

   <script type="text/javascript">
        var isCommitted = false;//表單是否已經提交標識,默認爲false
        function dosubmit(){
            if(isCommitted==false){
                isCommitted = true;//提交表單後,將表單是否已經提交標識設置爲true
                return true;//返回true讓表單正常提交
            }else{
                return false;//返回false那麼表單將不提交
            }
        }
    </script>blog

三、利用session解決。作法:在服務器端生成一個惟一的隨機標識號,專業術語:Token(令牌)。同時在當前用戶的Session中保存這個Token。而後將Token發送到客戶端的Form表單中在表單中使用隱藏域來存儲這個Token。表單提交的時候連同這個Token一塊兒提交到服務器端。而後在服務器端判斷客戶端提交上來的Token與服務器生成的是否同樣。不同就是重複提交了,此時服務器就不能夠處理重複提交的表單。處理完後清除當前用戶的Session中存儲的標識號。ip

相關文章
相關標籤/搜索