ThinkPhp中使用Verify类生产验证码不显示的原因

 
0 4124
泡沫随风飘
2015-08-19 16:02

ThinkPhp中使用Verify类生产验证码不显示的原因

网站是用thinkphp3.2.3开发的,在部署的时候发现验证码不好使了,显示不了。


可以看到只显示裂开的图标

生成的验证码不显示


右键->在新标签页中打开图片

右键,在新窗口中打开


查看源代码,可以看到输出的内容是png的内容,说明有输出

查看源代码,可以看到输出的内容是png的内容


按键F12,在Network 栏中可以看到输出 (Response Header下,content-Length为2458)

response header Content-Length 长度不为0,说明有输出


在生成验证码的代码前加上语句 exit;

在生成代码前加入 exit;

完整代码如下

 function verify(){

       $config = array("expire"=>2400, 'length' => 6,"useCurve"=>false,

            "codeSet"=>"123456789");

       exit;

       $verify = new Verify($config);

       $verify->entry();

    }



在调试中,可以看到content-length为3,说明在生成验证码之前有输出,影响了验证码的输出。

可以看到content-length为三


在exit前,加上ob_end_clean();

在exit前,加上ob_end_clean()<img alt="在exit前,加上ob_end_clean()" src="https://assets.aliyunnew.com/uploads/image/150820/ex8mdg35p0.png?media_id=196" title=" " width="600"  >

 function verify(){

       $config = array("expire"=>2400, 'length' => 6,"useCurve"=>false,

            "codeSet"=>"123456789");

       ob_end_clean();

exit;

       $verify = new Verify($config);

       $verify->entry();

    }

再次查看,可以看到content-length为0;

可以看见content-length为0


去除代码 exit;

去除exit语句

现在可以正常显示了。

正常显示


总结

ThinkPhp中使用Verify类生产验证码不显示的原因:

  1. php未开启GB库;

  2. 访问路径不正确;

  3. 编码不为UTF-8;

  4. 生成验证码前已经有输出。

前三种原因按照原义处理即可。
第四点,处理方法:

  1. 常见的原因是开启了调试模式,关闭调试模式即可define('APP_DEBUG',false);;

  2. 或者在输出图片之前添加ob_end_clean();ob_clean();语句;

ob_end_clean 会清除缓冲区的内容,并将缓冲区关闭。
ob_clean 清空(擦掉)输出缓冲区

本文内容由互联网用户自发贡献,版权归作者所有,本站不拥有所有权也不承担相关法律责任。如需转载请按以下形式注明来源: 复制

文章来源:阿里云牛优惠资讯网
文章标题:ThinkPhp中使用Verify类生产验证码不显示的原因
原文地址:https://aliyunnew.com/a/45.html
发布时间:2015-08-19 16:02
相关话题
没有相关话题
猜您喜欢
回帖
  • 抢占沙发~~