怎么在php中利用GD库实现中文验证码功能

  介绍

怎么在php中利用GD库实现中文验证码功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

生成中文验证码

//小小心机   汉字=美元,“如果觉得写得还可以的话互相关注报团取暖交流经验来自合肥的小码农巴拉啊鹏哦溜要了吗不能把呗日无一人说的回复看介绍请问惹锐欧尼之额心想城型从不错框架铝合金“;//获取中文字符的最大索引号   $ c =, mb_strlen(汉字美元)1;//var_dump ($ c);   ($小姐:=,0;美元小姐:& lt;, 5;美元我+ +){//获取起始点   ,start 美元;=,兰德(0,$ c);   ,//循环取出一个汉字   ,$代码。=mb_substr(汉字,美元开始,1);   }

可以很清晰看到一个中文占3个字节咯,utf - 8编码格式下一个中文字符占3个字节

怎么在php中利用GD库实现中文验证码功能

画图!

img 美元;=,imagecreate (120, 30);      $ white =, imagecolorallocate (img 255255255美元);   $ black =, imagecolorallocate (img美元,0,0,0);//点干扰素   for ($小姐:=,0;i<美元,200;美元我+ +),{//这里的颜色我就用随机产生的颜色了,之前是给定好了的,   imagesetpixel ($ img,兰德(0120),兰德(0,30),imagecolorallocate (img美元,兰德(0255),兰德(0255),兰特(0255)));   }//线干扰素   ($小姐:=,0;i<美元;20;美元我+ +){//这里的颜色我就用随机产生的颜色了,之前是给定好了的   imageline ($ img,兰德(0120),兰德(0,30),兰德(0120),兰德(0,30),imagecolorallocate (img美元,兰德(0255),兰德(0255),兰特(0255)));   }//像素字体大?$ size  16;//角度大小      时间=美元fontfile “simhei.ttf";//获取文本范围,见下方图   (信息=imagettfbbox美元大小,兰德(0 5),fontfile美元,美元代码);//echo  & # 39; & lt; pre> & # 39;;//print_r ($ info);   $ code_w=info [4] - info美元[6];//字符串的宽度   $ code_h=信息[1]- info美元[7];//字符串的高度//imagesx (img)美元,image 所代表的图像的宽度   $ x=(imagesx (img)——code_w美元)/2;//起始点的x美元   美元$ y=(imagesy (img) + code_h美元)/2;//起始点的$ y//向图像写入文本   imagettftext (img,美元大小,兰德(0 5),$ x, y,美元imagecolorallocate (img美元,兰德(0255),兰德(0255),兰特(0255)),fontfile美元,美元代码);//生成图像   imagejpeg (img);      imagedestroy (img);

这里美元信息这个是一个数组(可以print_r()看一看),数组中的每一项对应的其实是坐标,imagesx (img)美元就是图像所代表的图像的宽度,这样我想尽量让汉字保持在图片的居中位置,不然都跑偏了也看不见了

怎么在php中利用GD库实现中文验证码功能

生成验证码

怎么在php中利用GD库实现中文验证码功能

<强>小例子

& lt; php ?      session_start ();   头(“内容类型:text/html; chartset: utf-8");   echo  & # 39; & lt; pre> & # 39;;   var_dump ($ _SESSION);   var_dump ($ _POST);   echo  & # 39; & lt;/pre> & # 39;;   if ($ _SESSION[& # 39;代码# 39;],==,$ _POST[& # 39;代码# 39;)){   ,echo  & # 39;验证成功& # 39;;   ,//进行后续操作balabala   }   比;   & lt; ! doctype  html>   & lt; html  lang=癳n"祝辞   & lt; head>   ,& lt; meta  charset=癠TF-8"比;   ,& lt; meta  name=皏iewport"   内容=安拍芸矶?设备宽度,user-scalable=不,,初始=1.0,,最大范围=1.0,最小规模=1.0,比;   ,& lt; meta  http-equiv=癤-UA-Compatible",内容=癷e=edge"比;   ,& lt; title> Document   & lt;/head>   & lt; body>   & lt; form  action=啊?方法=皃ost"比;   ,& lt; input 类型=皌ext", name=癱ode",占位符=?“在   ,& lt; !——,开始做简单的验证——比;   ,& lt; img  src=https://www.yisu.com/zixun/index . php " onclick=" this.src=' index . php ?”+ math . random () " alt=" ">   关于怎么在php中利用GD库实现中文验证码功能问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

怎么在php中利用GD库实现中文验证码功能