如何实例化ThinkPHP中防止表单重复提交的机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计603个文字,预计阅读时间需要3分钟。
ThinkPHP 防止重复提交表单的方法总结如下:
1. 原因分析: - 表单重复提交:可能是用户操作失误或系统异常导致的。 - 问题:重复提交可能导致数据错误、资源浪费等。
2. 解决方案: - 使用Token:在表单中添加一个Token字段,服务器生成一个唯一的标识符,存储在session中,提交表单时携带该Token,服务器验证Token是否匹配,以此防止重复提交。 - 设置表单提交按钮属性:在表单提交按钮上设置`type=submit`属性,避免用户使用浏览器的后退按钮重复提交表单。
3. 具体实现: - 生成Token:在控制器中生成一个Token,存储在session中。 - 表单添加Token:在表单中添加一个隐藏的input字段,值为生成的Token。 - 验证Token:在控制器中获取session中的Token,与表单中的Token进行比对,若不匹配则拒绝提交。
4. 示例代码:
php// 生成Token$token=md5(uniqid(rand(), true));$_SESSION['token']=$token;
// 表单添加Token
// 验证Tokenif ($_POST['token'] !==$_SESSION['token']) { // Token不匹配,拒绝提交 exit('表单提交异常,请重新提交!');}
通过以上方法,可以有效防止ThinkPHP中表单的重复提交。
本文实例总结分析了ThinkPHP防止重复提交表单的方法。分享给大家供大家参考,具体如下:
为什么会有表单重复的坑
在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页面,还是返回本页面,这时点击浏览器的后退再提交或刷新页面,会导致form表单重复提交,即这条记录会被增加或修改两次。
导致表单重复提交的原因是:第一次提交的表单会被缓存到内存中,直到页面下次提交或页面关闭或转向其他页面时才消失。在自调用返回时,内存中的数据依然在,这时页面中的判断提交的代码依然可以检测到提交的值,顾会产生重复提交的效果。
相关学习
本文共计603个文字,预计阅读时间需要3分钟。
ThinkPHP 防止重复提交表单的方法总结如下:
1. 原因分析: - 表单重复提交:可能是用户操作失误或系统异常导致的。 - 问题:重复提交可能导致数据错误、资源浪费等。
2. 解决方案: - 使用Token:在表单中添加一个Token字段,服务器生成一个唯一的标识符,存储在session中,提交表单时携带该Token,服务器验证Token是否匹配,以此防止重复提交。 - 设置表单提交按钮属性:在表单提交按钮上设置`type=submit`属性,避免用户使用浏览器的后退按钮重复提交表单。
3. 具体实现: - 生成Token:在控制器中生成一个Token,存储在session中。 - 表单添加Token:在表单中添加一个隐藏的input字段,值为生成的Token。 - 验证Token:在控制器中获取session中的Token,与表单中的Token进行比对,若不匹配则拒绝提交。
4. 示例代码:
php// 生成Token$token=md5(uniqid(rand(), true));$_SESSION['token']=$token;
// 表单添加Token
// 验证Tokenif ($_POST['token'] !==$_SESSION['token']) { // Token不匹配,拒绝提交 exit('表单提交异常,请重新提交!');}
通过以上方法,可以有效防止ThinkPHP中表单的重复提交。
本文实例总结分析了ThinkPHP防止重复提交表单的方法。分享给大家供大家参考,具体如下:
为什么会有表单重复的坑
在开发中,如果一个新增或修改的表单,在后台完成数据库操作后我们设定的不是跳转到其他页面,还是返回本页面,这时点击浏览器的后退再提交或刷新页面,会导致form表单重复提交,即这条记录会被增加或修改两次。
导致表单重复提交的原因是:第一次提交的表单会被缓存到内存中,直到页面下次提交或页面关闭或转向其他页面时才消失。在自调用返回时,内存中的数据依然在,这时页面中的判断提交的代码依然可以检测到提交的值,顾会产生重复提交的效果。
相关学习

