位置: 编程技术 - 正文

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)

  • 什么是免税合并
  • 金税三期是什么意思
  • 以前年度损益调整在借方是什么意思
  • 现金流量表和利润表关系
  • 运输发票抵扣税怎么算
  • 发票不走账对哪方有害
  • 不动产净值包括增值税吗
  • 财务报表中利润率怎么算
  • 发票查询发票代码有误
  • 制造费用的借方和贷方各表示什么
  • 废料账务处理
  • 外借资质收取的税费会计处理
  • 公司借别的公司的钱再借给别的公司
  • 技术变动成本是指
  • 预收账款多了好还是少了好
  • 建筑业增值税税率11变为10
  • 资源税征收管理纳税期限
  • 一般纳税人高速公路通行费税率
  • 4s店额外收取服务费
  • 已经销售但是没货怎么办
  • 银行承兑汇票企业账户没钱
  • 发票拍照打印出来能用吗
  • 在建工程可以质押吗
  • 固定资产清理汇算清缴如何反应
  • 原材料计入资产成本吗
  • 建筑服务简易征收可以开专票吗
  • 半成品核算工作步骤及要求
  • 为什么预付账款是流动资产
  • 如何在苹果电脑上删除软件
  • win11如何将开始菜单里的软件移到桌面
  • 差旅费增值税专用发票少报销可以吗
  • php教程全集
  • 不动产出租要交什么税
  • 企业破产是不是要没收法人家里全部财产
  • 阿尔卑斯旱獭冬眠
  • 企业固定资产账户2019年6月初借方余额5000000元
  • PHP使用http_build_query()构造URL字符串的方法
  • 大西洋,一望无际的海面
  • asreg命令什么意思
  • 卷积拆分
  • 增值税直接减免税额要交企业所得税吗
  • 出口海运费222011
  • 被收购方和被收购企业
  • 周转材料包装箱属于存货分类的
  • 企业汇兑收益所得税税率
  • 日用品开增值税专用发票可以抵扣吗
  • 质量扣款可以放到费用吗
  • 含税与不含税的计算公式
  • 企业间借款利息收入
  • 查询sqlserver数据库开发这门课程的最高分
  • 出口退税指的是什么意思
  • 接受捐赠的增值税可以抵扣吗
  • 什么是原始凭证?简述原始凭证审核的内容
  • 外汇增值税是怎样计算
  • 股权转让对价款如何计算
  • 上个季度增值税报错了
  • 投资性房地产转换日的确定
  • 退客户多余货款怎么处理
  • 企业中征码怎么查询
  • 免抵退退税额
  • 给员工家人报销会计分录
  • 什么是资产减值准备计提
  • MySQL的存储过程保存在哪里
  • solaris安装教程
  • 索尼笔记本电脑怎么进入bios设置
  • ubuntu独立显卡黑屏
  • windowsxp的主要特点
  • 微软禁用windows
  • 启用win8 metro启动界面
  • 删除系统桌面
  • cocos creator3
  • cocos2d setTextureRect用法
  • Extjs中RowExpander控件的默认展开问题示例探讨
  • 样式默认有几种修改格式
  • unicode编码实现方案
  • import python-docx
  • 如何查询企业税务评级
  • 版权登记条件
  • 北京税务局代个人开发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设