php 解決表單重復(fù)提交實(shí)現(xiàn)方法引見(jiàn)

字號(hào):


    php 解決表單重復(fù)提交實(shí)現(xiàn)方法介紹
    重復(fù)提交是我們開(kāi)發(fā)中會(huì)常碰到的一個(gè)問(wèn)題,除了我們使用js來(lái)防止表單的重復(fù)提交,同時(shí)還可以使用php來(lái)防止重復(fù)提交哦。
    例1
    /*
    * php中如何防止表單的重復(fù)提交
    */
    session_start();
    if (empty($_SESSION['ip'])) {//第一次寫(xiě)入操作,判斷是否記錄了IP地址,以此知道是否要寫(xiě)入數(shù)據(jù)庫(kù)
    $_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次寫(xiě)入,為后面刷新或后退的判斷做個(gè)鋪墊
    //...........//寫(xiě)入數(shù)據(jù)庫(kù)操作
    } else {//已經(jīng)有第一次寫(xiě)入后的操作,也就不再寫(xiě)入數(shù)據(jù)庫(kù)
    echo '請(qǐng)不要再次刷新和后退'; //寫(xiě)一些已經(jīng)寫(xiě)入的提示或其它東西
    }
    ?>
    具體原理
    session范圍變量token來(lái)防止。
    1. 開(kāi)啟session:
    session_start();
    2. 如果有表單提交
    if (isset($token))
    token以hidden的形式包含在form當(dāng)中。
    3. 如果是重復(fù)提交表單
    1.if ($_SESSION["token"] != $token) {
    2. // 不讓重復(fù)提交,在此處理
    3. // header("location:".$_SERVER['PHP_SELF']);
    4.} else {
    5. // 正常的表單提交,在此處理
    6. // echo "已提交";
    7.}
    4. 設(shè)置token值
    1.$token = mt_rand(0,1000000);
    2.$_SESSION['token'] = $token;
    php 解決表單重復(fù)提交實(shí)現(xiàn)方法介紹
    ------解決方案--------------------
    是否允許用戶正常情況的第二次提交呢?
    ------解決方案--------------------
    實(shí)際上沒(méi)有這么做的