位置: 编程技术 - 正文

ThinkPHP下表单令牌错误与解决方法分析(thinkphp表单验证)

编辑:rootadmin

推荐整理分享ThinkPHP下表单令牌错误与解决方法分析(thinkphp表单验证),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp post,thinkphp post,thinkphp报表插件,thinkphp post,thinkphp exec,thinkphp表单提交,thinkphp表单提交,thinkphp表单提交,内容如对您有帮助,希望把文章链接给更多的朋友!

本文实例讲述了ThinkPHP下表单令牌错误与解决方法。分享给大家供大家参考,具体如下:

在项目的开发过程中,添加、编辑数据时偶尔会遇到系统提示的“表单令牌错误”,一开始没怎么在意,直到今天下午QA把此问题提到bug系统了,正好时间也有空余,就追着TP3.的源码看了下去,几分钟后,便知道原委了。

在项目中开启表单令牌,通常要在配置文件中做如下配置

以编辑数据为例,通常在服务端有个Model写上字段过滤规则,Action写上数据检测的代码,如

这时在IDE上双击create()定位到TP框架中Model.class.php中的create方法

看到代码会理解当autoCheckToken方法检测失败时会报错,那么就接着跟踪此方法

看了这段代码,会发现第一个判断中有$_SESSION[$name],那么这个seesion变量时从哪里过来的呢,这还得从生成令牌时说起,定位TokenBuildBehavior.class.php文件

ThinkPHP下表单令牌错误与解决方法分析(thinkphp表单验证)

此段代码主要是在TP开启表单验证的情况下,以TOKEN_NAME和当前URI的md5为健生成令牌值,再在用户提交表单时,先验证下是否存在该session,没有则返回false,有则紧接着和表单字段TOKEN_NAME验证下,如果一致先删除此session(作用时避免下次提交出先表单令牌错误),返回ture,否则返回false。

ok,回到主题,TP下表单提交之所以会出现令牌错误,那么就只有两种可能

1. 在令牌开启的状态下,提交的表单中,没有TOKEN_NAME字段或是没有相应session(当前提交表单环境下,没有生成相应session,这个主要是在用户提交后报错用户紧接着又刷新当前页面,同时编辑页面和展示页面是在同一个方法里)

2. 有session变量,但前后值不一样

我们项目之所以出现此错误,可以看看下面配置

本来应该写成布尔值的false,不知道哪位大侠任性的写成字符串的false了,那么判断时当然会按开启表单令牌的逻辑来,而且项目中,添加、编辑和展示都是同一个方法,一旦验证出错,一般程序处理逻辑会返回原有的界面,那么就和上次是同一个表单了,连续提交同一个表单也就相当于重复提交,那么便会报“表单令牌错误”。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

thinkPHP显示不出验证码的原因与解决方法分析 本文实例讲述了thinkPHP显示不出验证码的原因与解决方法。分享给大家供大家参考,具体如下:今天到公司,svnupdate代码后,在浏览器上输入域名后,在

Yii框架分页实现方法详解 本文实例讲述了Yii框架分页实现方法。分享给大家供大家参考,具体如下:下家公司用的框架是yii,这几天看了下相关教程,今儿把分页教程写下,最

Yii框架实现图片上传的方法详解 本文实例讲述了Yii框架实现图片上传的方法。分享给大家供大家参考,具体如下:今天在网上看了下有关图片上传的教程,历经挫折才调试好,现在把

标签: thinkphp表单验证

本文链接地址:https://www.jiuchutong.com/biancheng/293585.html 转载请保留说明!

上一篇:PHP那些琐碎的知识点(整理)(细说php)

下一篇:thinkPHP显示不出验证码的原因与解决方法分析(thinkphp in)

  • 补提以前年度的盈余公积可以在本年任意月份提取吗
  • 息税前利润增长率与财务杠杆系数
  • 资本公积转增资本的要求
  • 注册公司工贸和商贸区别
  • 工程项目结算流程图
  • 如何确定固定资产的原始价值
  • 劳务派遣的开票规范
  • 销售额包括哪些收入
  • 业务招待费可以开专票吗
  • 小规模企业工资表怎么做
  • 将产品转为本企业使用
  • 车船税没有发票可以税前扣除吗
  • 代扣代缴的增值税怎么做账
  • 提取法定盈余公积比例
  • 重庆房产税政策历史
  • 税收六项减免
  • 关税减免有哪些类型?
  • linux怎么开启远程
  • 各类预算的内容及其相互关系
  • 认证超时什么意思
  • 小规模纳税人可以开增值税专用发票吗
  • windows10提示更新11
  • php中class用法
  • 白条入账会计要负刑事责任吗
  • 对于个体工商户不需要满足累计经营三个月以上的条件
  • yii框架运行原理
  • 供热企业享受增值税吗
  • 福利费需要缴税吗
  • k8s部署ingress-nginx
  • php计算数组中值怎么算
  • 为什么运输合同比租赁合同风险小
  • 无纸化办理
  • python导入其他文件的函数
  • php ffi
  • java异常编程题
  • 企税申报表怎么填
  • 预存电费余额怎么突然多了
  • DEDECMSV5.6将软件下载次数直接生成静态
  • 预缴税款可以抵扣简易计税
  • 建筑企业小规模纳税人
  • 如何理解合并报表编制程序中的调整与抵消处理
  • 公司车辆过户给个人需要多少费用
  • 初次购买金税盘怎么做账
  • 制造费用期末要结转吗
  • 建筑施工企业质量管理规范
  • 流动比率表示方法
  • 可转换债券的转换比率计算公式
  • 纳税人购进国内商品
  • 公司加班的餐费怎么算
  • 捐赠支出算费用吗
  • 提高纳税遵从度依靠行政执法还是纳税服务
  • 车属于固定资产嘛
  • mysql5.7.21安装
  • sql返回数据条数
  • win8.1应用商店还能用吗
  • win10怎么预览文件
  • xp windows功能在哪里
  • ubuntu /opt
  • linux系统怎么安装
  • freebsd ip配置
  • u盘装系统软件哪个好
  • win10提示测试模式
  • win8打开运行窗口
  • 苹果Mac系统怎么安装
  • unix & linux
  • win8界面什么样
  • win7word打开很慢怎么解决
  • windows10 不能启动
  • nodejs静态编译
  • cocos2dx schedule
  • js操作dom节点的方法
  • python中的条件判断和循环语句
  • 传智播客在线课程
  • 安卓手机照片压缩
  • 获取路径下的文件名
  • python内置函数format
  • jquery 扩展事件
  • 创建android项目
  • 潍坊昌邑售房信息
  • 没工作个人所得税怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设