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    
    }
    ?>
  • 相关阅读:
    笨蛋的厄运
    模仿写了一个摸鱼应用解决原作者的问题
    retain和copy还有assign的区别
    分析与理解通知消息WM_NOTIFY
    备忘录
    数据结构C++模板实现之单向链表
    服务器(VPS合租)
    复制构造,赋值操作符,const重要性
    Windows 注册表操作简介
    窗口类封装之窗口对象消息处理的映射方法(1)
  • 原文地址:https://www.cnblogs.com/mengor/p/9168646.html
Copyright © 2011-2022 走看看