2017-12-27 807 views
0

我知道我可以通过js禁用按钮,但用户可以在他的浏览器中轻松修改该按钮。如何防止对php或mysql级别的双表单提交?

所以,我正在寻找一个简单的解决方案如何做到这一点。

我已经尝试过这个SESSION技巧https://stackoverflow.com/questions/20766744/php-double-form-submit-prevent但是,我仍然可以点击快速,它会在db中保存很多东西。

此外,如果我做了does a row with the same user_id, item_id and comment_id in the table reviews exist then stop条件 - >这也不起作用,当我点击按钮非常快。

mysql是否有一些功能可以拒绝使用相同的信息保存多行?

如果类似的东西存在,那将是伟大的。

例如user_id, item_id, comment_id只能保存一次,或者可能使用一些时间预防来保存多个事物。

+2

那么,你可以在这三个领域设置一个唯一的索引......但这是相当强悍和不灵活的。取决于你的结构和所需的需求。 – IncredibleHat

+0

在将任何数据保存到数据库之前,首先检查数据库表,以查看数据库表中是否存在提交的数据之一,如用户名。如果是,则标记用户,如果不验证表单并保存您的信息。 – dean

+0

好吧,如果我有一个表'评论'和字段'id,user_id,item_id,comment_id',并且只有这三个组合中的每一个(user_id,item_id,comment_id)可以保存如何做到这一点? – Greggore

回答

1

设计您的数据,使多个提交不会导致多个条目。

这里有2种方法可以实现,我更喜欢第二种。

[Unique columns]1@标志来压制php中的错误。 < - 这个结果在最近提交插入

或者更好的是你可以做一个调用数据库,看看信息已经存在,如果是这样,不要让insert电话。 < - 这导致第一次提交inserted。如果适合,条件逻辑可以继续调用update