素材牛VIP会员
JS或者PHP端如何防止重复提交?
 青***8  分类:PHP代码  人气:1026  回帖:8  发布于6年前 收藏

如果重复提交的话会在数据表里累加数据,有解决办法吗?

 标签:javascriptphp

讨论这个帖子(8)垃圾回帖将一律封号处理……

Lv5 码农
阴***光 学生 6年前#1

服务器端:
1.增加表单令牌,验证通过令牌失效。
2.如果有字段必须唯一,数据库设置唯一字段。
3.session存储最后提交的部分数据,判断是否一致。
4.成功后跳转新页面。
JS端:
1.提交后,取消提交事件或设置为不可点击。
2.成功后,重新加载页面。

Lv5 码农
qt***ah 页面重构设计 6年前#2

方法如下,详情看注释


var tag = 0;

$('.xxx').on('submit', function() {
    // 只有在tag = 0 的时候才能执行提交事件
    if(tag == 0) {
        // 提交事件执行的第一时间,将tag值改变,这样当再次触发submit时,就不会执行任何行为了
        tag = 1;
        // do something
        // 还可以在某些满足条件的情况下将tag值还原成0,让事件可以再次执行
    }
})
Lv5 码农
韩***y JAVA开发工程师 6年前#3

数据库里把字段设为UNIQUE的,然后PHP插入语句遇到重复的会执行错误,你捕捉到错误就知道是插入失败了。

Lv5 码农
mo***99 产品经理 6年前#4

Post/Redirect/Get 简称PRG,是一种用来防止表单重复提交数据的一种Web设计模式.

Lv6 码匠
黄***得 其它 6年前#5

单击提交时间,返回成功后,将表单中的内容清空。这样避免了重复提交

Lv4 码徒
be***ai JS工程师 6年前#6

参考laravel csrf-token https://laravel.com/docs/5.1/routing#csrf-x-csrf-token

Lv2 入门
zz***60 技术总监 6年前#7

前端的话
貌似是bootstrap或者jquery有一个button方法
比如可以在button增加一个data属性

<button id='submit' data-submit='提交ing...'>提交</button>
js:
$('#submit').button('submit').on()

这样就可以自动disable掉button 并且显示data-submit的文字

Lv4 码徒
12***mo UI设计师 6年前#8
  1. Ajax 提交后,设置 submit 为不可点击

  2. 数据库设置 唯一索引,防止重复数据

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取