国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 php教程 PHP源碼 PHP防止使用者重複提交表單

PHP防止使用者重複提交表單

Nov 09, 2016 am 09:26 AM

我們提交表單的時(shí)候,不能忽視的一個(gè)限制是防止用戶重複提交表單,因?yàn)橛锌赡苡脩暨B續(xù)點(diǎn)擊了提交按鈕或者是攻擊者惡意提交數(shù)據(jù),那麼我們在提交數(shù)據(jù)後的處理如修改或添加數(shù)據(jù)到資料庫時(shí)就會(huì)惹上麻煩。

那麼如何規(guī)避這中重複提交表單的現(xiàn)像出現(xiàn)呢?我們可以從很多方面開始:
先從前端做限制。前端JavaScript在按鈕被點(diǎn)擊一次後禁用,即disabled,這個(gè)方法簡單的防止了多次點(diǎn)擊提交按鈕,但是缺點(diǎn)是如果用戶禁用了javascript腳本則失效。
第二,我們可以在提交後做redirect頁面重定向,也就是提交後跳到新的頁面,主要避免F5重複提交,但也有不足之處。
第三,就是資料庫做唯一索引約束。
第四,就是做session令牌驗(yàn)證。
我們現(xiàn)在來了解下簡單的利用session token來防止表單重複提交的方法。
我們在表單中加一個(gè)input隱藏域,即type="hidden",其value值用來保存token值,當(dāng)頁面刷新的時(shí)候這個(gè)token值會(huì)變化,提交後判斷token值是否正確,如果前臺(tái)提交的token與後臺(tái)不匹配,則認(rèn)為是重複提交。

< ?php
/*  * PHP簡單利用token防止表單重復(fù)提交  */
session_start();
header("Content-Type: text/html;charset=utf-8");
function set_token() {
    $_SESSION[&#39;token&#39;] = md5(microtime(true));
}
function valid_token() {
    $return = $_REQUEST[&#39;token&#39;] === $_SESSION[&#39;token&#39;] ? true: false;
    set_token();
    return $return;
}
//如果token為空則生成一個(gè)token 
if(!isset($_SESSION[&#39;token&#39;]) || $_SESSION[&#39;token&#39;]==&#39;&#39;) {  
    set_token(); 
}    
if(isset($_POST[&#39;web&#39;])){  
    if(!valid_token()){  
        echo "token error,請(qǐng)不要重復(fù)提交!";  
    }else{  
    echo &#39;成功提交,Value:&#39;.$_POST[&#39;web&#39;];  
    } 
}else{ 
?>  
    <form method="post" action="">  
    <input type="hidden" name="token" value="<?php echo $_SESSION[&#39;token&#39;]?>">  
    <input type="text" class="input" name="web" value="www.jb51.net">  
    <input type="submit" class="btn" value="提交" />  
    </form> 
<?php 
} 
?>  

以上是一個(gè)簡單的防止重複提交表單的例子。
那麼實(shí)際專案開發(fā)中,會(huì)對(duì)表單token做更複雜的處理,也就是我們所說的令牌驗(yàn)證??赡芤龅奶幚? 有:驗(yàn)證來源域,即來路,是否為外部提交;匹配要執(zhí)行的動(dòng)作,是添加、修改or刪除;其次最重要的是構(gòu)建token,token可以採用可逆的加密演算法, 盡可能複雜,因?yàn)槊魑倪€是不安全的。

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1600
29
PHP教程
1502
276