解决php验证码不显示问题,解决php7/php8的验证码不显示情况

by 少年2021-07-20
  • 1 赞
  • 1 收藏
  • 技术
  • 195242 评论
  • 1706339 阅读
© 本文 by 少年 版权所有,作者未对本笔记声明转载限制,转载时请注明本文标题和链接。
笔记

php建站经常会遇到验证码不显示的情况,特别是php网站程序搬移服务器或者更换主机时经常会遇到,可能你已经在网上找了很多方法,按着做了一遍还是不显示,那你就需要用到本笔记的一些内容了。废话不多说,先把网上得解决方法的整理一下:


1、未安装或未开启gd模块


出现验证码不显示的情况,最基本的一个错误就是你很可能在php里面忘记安装gd模块了。window环境下面只需要在php.ini文件里面找到,注意不同版本的php配置项是有区别的,如下:

;extension=php_gd2.dll      ### PHP 5.* 版本
;extension=gd2              ### PHP 7.* 版本
;extension=gd ### PHP 8.* 版本

把前面的分号去掉就可以了,重启apache后,你就可以在phpinfo()里面找到这个

如果是在ubuntu等linux环境下面,你需要安装gd模块


2、文档使用了有BOM的编码格式


如果你的gd库安装并开启了,任然不显示验证码,那就可能是你的生成文档可能采用了有BOM的utf-8。


UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支持UTF-16、UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行(一般是三个字节)。session_start();开启前是不能有输出的,而这个UTF-8 BOM产生输出是在文档最上方,所以会导致出错。


这时采用无BOM的UTF-8格式就可以解决问题,所以你需要将代码的编码格式改成无BOM格式。采用编辑器修改下编码格式即可。


除了修改编码格式,你还可以采用另外的一种方法,那就是在代码 session_start(); 前加上 ob_clean(); 即可解决BOM签名带来的问题。


<?php
ob_clean();
session_start();
....


什么?你说你上边的方法你都做了,验证码还不显示,好吧,这种问题我也遇到了,你的新环境版本是不是PHP7.*?是的话,那么你就来对地方了。


3、填充内容函数imagettftext()参数和php版本问题


问题是出现在笔者安装了多个php版本环境进行程序兼容测试中,测试的php版本包括PHP5.*的几个版本,PHP7.*的几个版本和PHP8.*的几个版本,测试发现PHP5.*和PHP8.*下能正常显示验证码,而在PHP7.*的全系列版本都不能正常显示,经对代码分析发现原因是我采用了imagettftext()函数填充内容到到验证码的画布中,如果采用imagestring()函数填充内容就能正常显示。


解决方法你可以改用imagestring()来代替imagettftext()函数,但是如果仍然想要使用imagettftext()来自定义填充内容的字体样式的话,往下看。


经查询手册发现验证码不显示是由于imagettftext()函数的字体路径引起的,我之前使用了字体文件是相对路径"font/fenix.ttf",这种写法,php5.X和php8.X支持,但是php7.X需要是使用绝度路径,即使用'D:/www/core/font/fenix.ttf'这种形式,经测试采用网络形式的加载也是可行的"https://www.ideashu.cn/core/font/fenix.ttf",为了兼容此处改用绝对路径即可完美解决问题。


代码如下(代码是在项目中使用的,有些是项目中定义好的常量和变量,切勿直接复制使用):


//imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor);// 填充内容到画布中
$fonturl=IDEA_ROOT .'/core/font/fenix.ttf';//php5.X和php8.X支持相对路径font/fenix.ttf,但是php7.X需要使用绝对路径,为了兼容此改该用绝对路径
imagettftext($image,$fontsize,0,$x,$y,$fontcolor,$fonturl,$fontcontent);


谢谢你的阅读,希望能够帮到你。


---

评论
Suelek
tadalafil online india

2022-03-22 07:06:07回复

Kimlek
stromectol tablets

2022-03-22 07:03:25回复

ialiqex
Doctors, xqm.kvqn.ideashu.cn.dba.eb hydrostatic dislike laundry [URL=http://johncavaletto.org/drugs/furosemide/ - furosemide[/URL - [URL=http://umichicago.com/mircette/ - mircette[/URL - [URL=http://iowansforsafeaccess.org/virility-pills/ - cheapest virility pills[/URL - [URL=http://proteinsportsnutrition.com/bactrim/ - bactrim 480 best price canadian[/URL - [URL=http://fontanellabenevento.com/product/buy-hydroxychloroquine-without-prescription/ - generic hydroxychloroquine china[/URL - [URL=http://autopawnohio.com/item/www-hydroxychloroquine-com/ - hydroxychloroquine without dr prescription[/URL - [URL=http://brisbaneandbeyond.com/product/vardenafil/ - vardenafil online usa[/URL - [URL=http://wow-70.com/item/cialis/ - cost of cialis tablets[/URL - [URL=http://christmastoysite.com/product/lasix/ - lasix for cheap prices[/URL - [URL=http://naturalbloodpressuresolutions.com/prednisone/ - comprar prednisone malaga[/URL - [URL=http://lokcal.org/product/bactrim/ - purchase bactrim[/URL - [URL=http://lokcal.org/cialis-without-prescription/ - cialis no prescription[/URL - [URL=http://autopawnohio.com/item/amoxicillin/ - amoxicillin to buy[/URL - [URL=http://thefashionhob.com/tiova/ - cheapest tiova[/URL - [URL=http://intimidationmma.com/prednisone-made-in-the-usa/ - fda prednisone[/URL - dye secretomotor humanity, buying guaranted quality furosemide cheap mircette online virility pills bactrim capsules for sale hydroxychloroquine for sale hydroxychloroquine without dr prescription hydroxychloroquine no prescription lowest price generic vardenafil cheapest cialis lasix maximum daily dosage cupon for lasix prednisone generic bactrim uk cialis no prescription amoxicillin for sale overnight tiova prednisone made in the usa dishonesty http://johncavaletto.org/drugs/furosemide/ where to buy furosemide http://umichicago.com/mircette/ mircette online mircette pills http://iowansforsafeaccess.org/virility-pills/ virility pills http://proteinsportsnutrition.com/bactrim/ bactrim coupon http://fontanellabenevento.com/product/buy-hydroxychloroquine-without-prescription/ non prescription hydroxychloroquine http://autopawnohio.com/item/www-hydroxychloroquine-com/ hydroxychloroquine http://brisbaneandbeyond.com/product/vardenafil/ vardenafil generic http://wow-70.com/item/cialis/ buy cialis w not prescription http://christmastoysite.com/product/lasix/ amazon lasix 40 mg http://naturalbloodpressuresolutions.com/prednisone/ prednisone http://lokcal.org/product/bactrim/ bactrim http://lokcal.org/cialis-without-prescription/ cialis http://autopawnohio.com/item/amoxicillin/ generic amoxicillin in canada http://thefashionhob.com/tiova/ tiova without dr prescription tiova without a prescription http://intimidationmma.com/prednisone-made-in-the-usa/ prednisone prednisone without a doctors prescription chances paraganglioma.

2022-03-22 06:58:15回复

SirTwith
dark market url dark market onion

2022-03-22 06:56:28回复

Samlek
cialis daily price

2022-03-22 06:56:02回复

1 ... 36991369923699336994369953699636997 ... 39049(有 195242 条评论)