介绍
今天就跟大家聊聊有关使用PHP怎么实现一个汉字验证码功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
<强>创建背景画布强>
image 美元;=,imagecreatetruecolor(200年,60岁); background 美元;=,imagecolorallocate($形象,,255,,255,,255); imagefill($形象,,0,0,,背景)美元;
<强>画干扰点强>
for (i=0;美元,美元小姐:& lt;, 300;,我+ +美元),{, pixColor 美元;才能=,imagecolorallocate(形象,美元,兰德(150,,240),兰德(150,,240),兰德(150,,240)); 美元才能pixX =,兰德(10,190); 美元才能pixY =,兰德(5,,55); imagesetpixel才能(形象,美元,pixX美元,调皮捣蛋的美元,美元pixColor); }
<>强画干扰线强>
//4条水平线 for (i=0美元;,美元小姐:& lt;, 5;,我+ +美元),{,=美元才能lineColor imagecolorallocate(形象,美元,兰德(50,150),兰德(50,150),兰德(50,150)); 时间=美元才能lineX1 0; 时间=美元才能lineX2 300; 美元才能lineY1 =,($小姐:+,- 1),*,12; 美元才能lineY2 =,($小姐:+,- 1),*,12; imageline才能(形象,美元,lineX1美元,lineY1美元,lineX2美元,lineY2美元,美元lineColor); }//10条垂直线 for (i=0美元;,美元小姐:& lt;, 30;,我+ +美元),{,=美元才能lineColor imagecolorallocate(形象,美元,兰德(50,150),兰德(50,150),兰德(50,150)); 美元才能lineX1 =,($小姐:+,- 1),*,10; 美元才能lineX2 =,($小姐:+,- 1),*,10; 时间=美元才能lineY1 0; 时间=美元才能lineY2 60; imageline才能(形象,美元,lineX1美元,lineY1美元,lineX2美元,lineY2美元,美元lineColor); }
<>强画汉字强>
text 美元;=,数组(& # 39;栀& # 39;,,& # 39;子& # 39;,,& # 39;花& # 39;,,& # 39;开& # 39;); for (i=0美元;,美元小姐:& lt;, 4,,我+ +美元),{=美元才能textColor imagecolorallocate(形象,美元,兰德(20,100),,兰德(20,100),兰特(20,100)); 时间=美元才能textX 美元小姐:*,50,+,10; 美元才能textY =,兰德(40岁,60岁); 值,,imagettftext(形象,美元,30日,兰德(20,,50),textX美元,textY美元,输入textColor美元,“/图书馆/字体/华文仿宋.ttf",,美元文本($ i)); }
这里注意一下,字体文件一定要支持中文的
编码要使用utf - 8, gbk的中文记得要转吗【iconv函数可以帮助你】
<强>输出图像强>
头(“内容类型:图像/png"); imagepng图像($);
<>强销毁资源强>
imagedestroy图像($);
经过粗略的搞吧搞吧,中文验证码也就显示出来了,当然一般网站使用的时候会有一个汉字库种子,从里面随机取出特定个数的汉字显示,最后就是记录到会话进行验证了。