zoukankan      html  css  js  c++  java
  • 防止表单重复提交

    首先从前端做限制。前端JavaScript在按钮被点击一次后禁用,即disabled,这个方法简单的防止了多次点击提交按钮,但是缺点是如果用户禁用了javascript脚本则失效。第二,我们可以在提交后做redirect页面重定向,即提交后跳转到新的页面,主要避免F5重复提交,但是也有不足之处。第三,就是数据库做唯一索引约束。第四,就是做session令牌验证。

                    <button onClick="article_save_submit(this);" class="btn btn-primary radius" type="button"><i
                            class="Hui-iconfont">&#xe632;</i> 保存并提交
                    </button>
    
    <script>
        function article_save_submit(obj){
          obj.disabled = true;
        }
    </script>
    <?php
    /*
    * PHP简单利用token防止表单重复提交
    */
    session_start();
    header("Content-Type: text/html;charset=utf-8");
    function set_token() {
        $_SESSION['token'] = md5(microtime(true));
    }
    
    function valid_token() {
        $return = $_REQUEST['token'] === $_SESSION['token'] ? true : false;
        set_token();
        return $return;
    }
    
    //如果token为空则生成一个token
    if(!isset($_SESSION['token']) || $_SESSION['token']=='') {
        set_token();
    }
    
    if(isset($_POST['web'])){
        if(!valid_token()){
            echo "token error,请不要重复提交!";
        }else{
            echo '成功提交,Value:'.$_POST['web'];
        }
    }else{
    ?>
        <form method="post" action="">  
            <input type="hidden" name="token" value="<?php echo $_SESSION['token']?>">  
            <input type="text" class="input" name="web" value="www.helloweba.net">  
            <input type="submit" class="btn" value="提交" />  
        </form>
    <?php    
    }
    ?>
  • 相关阅读:
    HDU 1284 思维上的水题
    Buy Tickets POJ
    K-th Number Poj
    主席树入门+博客推荐
    Greg and Array CodeForces 296C 差分数组
    三连击 P1008 洛谷 python写法
    Lost Cows POJ 2182 思维+巧法
    Bash and a Tough Math Puzzle CodeForces 914D 线段树+gcd数论
    Can you answer these queries? HDU 4027 线段树
    敌兵布阵 HDU 1166 线段树
  • 原文地址:https://www.cnblogs.com/mengor/p/9168646.html
Copyright © 2011-2022 走看看