最近遇到一个项目中用的是Thinkphp这个框架开发的,其中在登录这块有验证码这个功能,其实这个功能是TP自带的,其中主要方法是buildImageVerify,位于ThinkPHP\Extend\Library\ORG\Util\Image.class.php中。该验证码的机制就是当前台每次重新绘制验证码时,那么在后台就会调用buidImageVerify这个方法,该方法主要是绘制验证码,并且把验证码上的数字或者是文字信息存储到session中。这样就完成了对验证码的存储以及output到前端,做校验这个都明白的,就是拿用户输入的验证码和session中的做比较,一致则返回true,否则返回false。当让了TP中是对验证码的md5做比较了,因为session中就是存储的是验证码md5的值,部分代码如下:

static function buildImageVerify($length=4, $mode=1, $type='png', $width=48, $height=22, $verifyName='verify') {import('ORG.Util.String');$randval = String::randString($length, $mode);session($verifyName, md5($randval));  //MD5// 其它代码 ......
}

当在前端一直报出验证码输入错误的信息时,我大概分了几个步骤来找原因:

1.首先是确保自己的输入是正确的。

2.其次是验证代码的逻辑是否是正确的,是否有中途将session置空的操作。

3. 最后是检查跟PHP相关的配置是否有问题。

这样我就直接进入了第二个步骤,就开始调试代码,用var_dump 这个函数在验证码比较之前将POST过来的验证码和session中的验证码打印出来,结果发现session中的验证码一直为空,说明前端刷新的验证码并没有保存到session中。我继续调试返现session所存储的名字和取session中也是一致的。我开始怀疑session.auto_start的设置问题,尽管TP这个框架会自动启用session.auto_start 。检查的结果却是配置文件中是默认开启的。最后参考TP官方社区的这篇帖子:http://www.thinkphp.cn/topic/3542.html,还是同样的问题。最后我就开始检查php.ini 的配置,找到了session.save_path ,截图如下:

我尝试的访问后面的路径,但是不存在,并且在地址栏还有错误报出。因为在给session赋值的时候除了会网客户端的cookie里面写东西,同时也会想服务器上的session.save_path 这个目录下记录session的信息,文件命名默认是以session.id来命名的。所以我得出的结论是上面所配置的路径是存在的,有时候即使存在但是没有访问权限,也同样会导致session无法写入的。所以我将该路径指向了“C:\Windows\Temp” ,修改完毕后重新启动apache,验证码就ok了。

ThinkPHP 提示验证码输入错误相关推荐

  1. Think PHP 提示验证码输入错误

    最近遇到一个项目中用的是Thinkphp这个框架开发的,其中在登录这块有验证码这个功能,其实这个功能是TP自带的,其中主要方法是buildImageVerify,位于ThinkPHP\Extend\L ...

  2. 浏览器总是提示验证码输入错误

    今天在用浏览器的时候,发现每个网站当我输入正确的用户名/密码/验证码之后老是提示说验证码错误, 我就纳了闷了,怎么回事,所有的网站都这样子, 后来在用QQ邮箱登录的时候,QQ邮箱网页提示我可能设置禁用 ...

  3. 解决工行登录失败:[96111945]验证码输入错误或已经超时失效,请重新输入

    今天,我使用公司的笔记本登录工行网站,总遇到这样一个问题:[96111945]验证码输入错误或已经超时失效,请重新输入. 我使用的是360浏览器,起初我怀疑是版本不新,好长时间没有升级了.我升级了一下 ...

  4. tp5 验证码输入错误后自动刷新

    问题:在tp5+layui框架结合的项目中,发现tp框架自带的验证码输入错误后无法自动刷新,TP文档也没有介绍解决情况. 解决:在登陆访问后台的ajax方法中解决 当后台返回验证码错误后自动刷新. 这 ...

  5. 表单验证通过输入框获取用户输入的密码,如果输入密码为“happy123”,则显示“密码输入正确”,否则提示“密码输入错误”,如果输入三次,显示提示信息“三分钟后在尝试”

    功能:简单的表单验证,密码输入次数控制,定时器控制可输入提醒,密码匹配 Html:请忽略界面设计,没时间做 <form><input id="userName" ...

  6. iPhone开机密码提示你输入错误,你千万要这样做,不看后悔吧!

    最近,我的iPhone6 由于修改密码,导致里面的资料全没了.通讯录.照片.微信聊天记录.短信.备忘录,损失惨重,人也上火了.为了不让同一个坑绊倒两次,也不让别人绊倒,我总结了下面的,希望对大家有帮助 ...

  7. 验证码输入错误怎么再次刷新验证码

    利用jQuery的prop()函数获取src属性的值,向Servlet发出请求的时候加一个随机数,保证每次都是不同的请求 <script type="text/javascript&q ...

  8. jQuery 验证码输入错误后自动刷新验证码 点击验证码图片刷新验证码

    利用jQuery的attr()函数,向Servlet发出请求的时候加一个随机数, 保证每次都是不同的请求 $('#imgVcode').attr("src","/veri ...

  9. 工信部备案查询验证码输入错误的原因

    之前一直出现这个情况,网上搜索了下,很多人跟我一样.提供了各种解决办法,均无效. 后来,后来想了一下,为什么呢? 发现进入工信部首页的时候 会做一个跳转. 我的博客地址:http://www.cnbl ...

  10. 工行网银自动退出[96111945]验证码输入错误或已经超时失效解决方案

    设置ActiveX控件启用选项: IE6.0版本的设置方法 请您在IE浏览器菜单栏依次选择"工具"→"Internet选项"→"安全"→&q ...

最新文章

  1. 企业网络推广——面对网络推广企业网站提升收录到底该怎样做?
  2. Python实训day11pm【大作业简略解析】
  3. CodeForces - 1400G Mercenaries(容斥原理)
  4. 零基础如何快速入门深度学习?
  5. polsarpro的开源代码_13个开源遥感软件包
  6. Unity3D世界坐标和局部坐标的关系,之间转换浅谈
  7. Matlab绘制运动想象ERD/ERS分析法图像
  8. rails分页(kaminari)
  9. 关于严格模式的简单介绍
  10. 1960-征战的Loy
  11. VUE大屏可视化实战
  12. 2D Pixel Perfect:使用Unity创建任天堂红白机风格复古游戏
  13. 二建考生速看 拿到二级建造师证书后该如何进行注册?
  14. javaw.exe是什么进程?
  15. YOLO 系列损失函数
  16. 【css】纯css实现table表格固定表头,表内容滚动
  17. 超级详细的HTML5讲解
  18. CSV文件导入数据库后中文乱码
  19. SaaS 软件开发为企业数字化转型赋能
  20. UNI-APP在自定义组件中内嵌H5/Html网页,可自定义webview大小,加载不闪屏

热门文章

  1. 常用大数据核心技术有哪些?
  2. 人工智能+建筑,会产生什么?
  3. GATK使用方法详解(原始数据的处理)
  4. MATLAB判断梅森素数,指数式的梅森素数和斐波那契素数有无穷多个获证
  5. 智能车过滤阳光_阳光为这辆车加油
  6. 红黑树(四)之 C++的实现 http://www.cnblogs.com/skywang12345/p/3624291.html?utm_source=tuicoolutm_medium=refe
  7. emqx启用JWT令牌认证(包含hmac-based和public-key)
  8. W806开发板环境搭建
  9. 云编程那些事3 - Yahoo的烟斗
  10. 清华大学计算机夏文韬,太猛了--南京外国语学校2007届高三毕业生去向