下面的情况就会导致php表单提交方法重复提交:
一:利用js设置按钮点击后变成灰色
点击完按钮之后变成灰色就不能点击了用户需要再次提交php表单提交方法的话就要刷新页媔之后重新填写数据再提交了。
在session
中放一个特殊标志当php表单提交方法页面被请求时,生成一个特殊的字符标志串存在session
中,同时放在php表單提交方法的隐藏域里接受处理php表单提交方法数据时,检查标识字串是否存在并立即从session中删除它,然后正常处理数据
如果发现php表单提交方法提交里没有有效的标志串,这说明php表单提交方法已经被提交过了忽略这次提交。
这使你的web应用有了更高级的XSRF
保护
加载提交的页媔时候生成一个随机数,
存储在php表单提交方法的隐藏输入框中:
在接收页面的PHP代码如下:
原理和session
差不多但是cookies
一旦用户浏览器禁用cookies
,这功能就失效了
四:利用header函数跳转
一旦用户点击提交按钮,处理完数据后跳到其他页面
五:利用数据库来添加约束
直接在数据库里添加唯一约束或创建唯一索引一旦发现用户重复提交了,直接抛出警告或者提示或者只处理第一次提交的数据,这是最直接有效的方法要求前期的数据库设计和架构要考虑周全.
在提交后执行页面重定向,这就是所谓的Post-Redirect-Get (PRG)
模式简言之,当用户提交了php表单提交方法后你去执行一个愙户端的重定向,转到提交成功信息页面