位置: 编程技术 - 正文

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)

  • 进出口公司怎么做
  • 特定业务计算的应纳税所得额
  • 个体摊贩
  • 小规模结转成本的会计分录怎么写
  • 注销公司详细步骤
  • 做电商没有进货码怎么办
  • 汇算清缴退税可以不退吗
  • 购置房屋
  • 房地产公司产品无偿提供他人使用 税
  • 国家金库是什么税费
  • 防洪费2019年税率
  • 一般纳税人上个月没有申报这个月申报不了
  • 无形资产摊销金额计入什么科目
  • 购买国债逆回购有股东限制
  • 筹建期间职工福利费都要通过应付职工薪酬核算吗
  • 快递公司税收优惠
  • 公司注销前怎么平账才不用交税
  • 外贸企业出口退税流程图
  • 接受个人投资现金怎么做账务处理?
  • 多缴个税账务处理
  • 库存商品过期报损
  • 公司租赁汽车
  • 衍生金融资产属于投资性资产吗
  • 收到服务费发票怎么做账
  • 动态路由协议rip配置实验心得
  • leeurbanriders是什么牌子
  • linux网络接口状态命令
  • PHP:imagepsloadfont()的用法_GD库图像处理函数
  • PHP:mcrypt_enc_get_supported_key_sizes()的用法_Mcrypt函数
  • 发票章盖的不清楚可以在旁边再盖一个吗
  • 会计上社保的分录是什么
  • yolov5 教程
  • php面向对象的三大特性
  • 注册资本和投资总额的关系
  • php制作微信小程序
  • js删除对象的方法
  • 微信小程序完整授权
  • 即征即退先征后返属于政府补助吗
  • ntpdate命令详解
  • 关于专利技术转让的说法
  • 会计核算方法有几种
  • 企业产值用什么符号表示
  • 机动车发票哪几联 做帐
  • 银行存款日记账怎么记账
  • 保险业务手续费
  • 跨年取得的发票金额大于暂估金额
  • 出口退税单机版是什么意思
  • 征地补偿需要去村委会吗
  • 无形资产入账价值错误怎么调
  • mysql innodb锁
  • 新租赁准则承租人租金用什么科目
  • mysql主从复制实现原理
  • 金税盘维护费应该计入什么科目
  • 非盈利组织固定资产金额标准最新规定
  • 接受捐赠的固定资产进项税额可以抵扣吗
  • 无发票费用可以入账吗
  • 出差期间招待费用怎样报销
  • 社保的生育险按照什么比例报销
  • 企业所有者权益在数量上等于
  • 收到保险公司的赔款计入什么科目
  • Windows平台下被支持最好的音频格式
  • ubuntu安装超详细教程
  • FreeBSD中使用QUOTA(磁盘配额)来限制用户空间
  • vmware 10虚拟机
  • PQV2ISECURITY.EXE - PQV2ISECURITY是什么进程 有什么用
  • win7开机没反应怎么办
  • opengl源码在哪里
  • Javascript selection的兼容性写法介绍
  • 详解16型人格
  • Python统计代码
  • python抓取软件界面数据
  • python和java对接
  • unity 3d ui
  • python xml.etree.ElementTree遍历xml所有节点实例详解
  • 国家税务局网站发票验真伪
  • 不予税务行政许可
  • 河南省税务局冯伟
  • 云票助手使用步数怎么改
  • 报税日期2023年
  • 小企业会计准则会计科目表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设