欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

php验证码不显示问题-[原创]

日期:2019-10-12 11:37:52 作者:tanyi 来源:我的笔记 浏览:1228 次
php验证码不显示其实已经不是什么新鲜词了,不管你是开始学编程的菜鸟还是已经很牛B的大神,都会遇到这些问题。

当然这个问题解决方法也很简单,就是在生成验证码图片之前清除一下输出缓冲区一般都能解决(ob_clean),问题是解决了,但是造成问题的根源是什么呢?估计很多人并没有去深入查找。

刚好我今天又遇到了同样的问题,我用的是tp5框架(5.0.24),在写一个验证码功能的时候验证码图片不显示,然后在生成验证码图片之前清除一下输出缓冲的内容就正常了,趁着不忙我并没有就这样完了,我想看看到底是什么原因导致缓冲区有多余的内容。

首先我在生成验证码的控制器方法里面打印一下缓冲区内容,如图:

image.png

可以看见有一段多余空格字符,经检查验证码所在控制器文件没有任何问题,<?php 前面没有空格,文件也没有bom头等,于是只能顺藤摸瓜,最后定位到了public下面的index.php文件,原文件内容是这样:

 image.png

可以看见该文件代码开始前有多余的换行操作,于是我把换行清理掉,再次打印缓冲区内容。

image.png

还是有多余的内容,接着看了下该文件的编码,显示是使用的utf8 bom编码,最好把编码换成无bom后就正常了。

其实验证码不显示一般原因就是代码开头有多余的空格,换行之类的,再就是文件编码的问题了,绝对不能使用带bom的编码形式。

至于这个index.php为什么会变成这样我自己也不记得了,反正问题根源找到了就ok了。

提交评论
评论列表