码迷,mamicode.com
首页 > 其他好文 > 详细

防止表单重复提交

时间:2018-06-11 20:35:26      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:als   back   art   mic   asc   禁用   BMI   prim   ali   

首先从前端做限制。前端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    
}
?>

 

防止表单重复提交

标签:als   back   art   mic   asc   禁用   BMI   prim   ali   

原文地址:https://www.cnblogs.com/mengor/p/9168646.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!