如何防止对php或mysql级别的双表单提交?
问题描述:
我知道我可以通过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种方法可以实现,我更喜欢第二种。
[Unique columns]
1和@
标志来压制php中的错误。 < - 这个结果在最近提交插入
或者更好的是你可以做一个调用数据库,看看信息已经存在,如果是这样,不要让insert
电话。 < - 这导致第一次提交inserted
。如果适合,条件逻辑可以继续调用update
。
那么,你可以在这三个领域设置一个唯一的索引......但这是相当强悍和不灵活的。取决于你的结构和所需的需求。 – IncredibleHat
在将任何数据保存到数据库之前,首先检查数据库表,以查看数据库表中是否存在提交的数据之一,如用户名。如果是,则标记用户,如果不验证表单并保存您的信息。 – dean
好吧,如果我有一个表'评论'和字段'id,user_id,item_id,comment_id',并且只有这三个组合中的每一个(user_id,item_id,comment_id)可以保存如何做到这一点? – Greggore