Heim >Backend-Entwicklung >PHP-Tutorial >PHP实现网站中文验证码

PHP实现网站中文验证码

WBOY
WBOYOriginal
2016-06-20 13:01:421051Durchsuche

PHP使用中文汉字验证码,下面是使用php生成汉字验证码的具体用法和函数代码。

用法如下:

<?php

create_excode(4);//生成四个汉字的验证码汉字验证码图片:具体函数代码如下:<?php
/*
* $length 验证码汉字个数
*/
function create_excode($length){
$randChar=array('浩','比','不','惊','静','看','友','前','花',
'开','龙','落','义','得', '江','无','意','虎','望','天','外',
'云','卷','市','丁','中','程','人','产','名','仅','余','金',
'国','美','币','东','木','水','火','土','七','九','八','工',
'码','图','员','电','大','秒','舒','仁');
header('content-type: image/png');
$charWidth=30;//每个字符占有的宽度
$image_x=$length*$charWidth; //图片宽度
$image_y=40; //图片高度
$noise_num=100*$length; //杂点数量
$line_num=13; //干扰线数量
$image=imagecreate($image_x,$image_y);
$w=$h=0;//图片款高度初始化
imagecolorallocate($image,250,250,250); //设定图片背景颜色
//imagecolorallocate($image,0xff,0xff,0xff);//白色背景
$rectangle_color=imagecolorallocate($image,0xAA,0xAA,0xAA); //边框颜色
$noise_color=imagecolorallocate($image,0x00,0x00,0x00); //杂点颜色
$font_size=18;//字体大小
$font_y=29;//字符在Y轴上基线的位置
$font_face='heiti.ttf'; //字体
//加入杂点
for($i=0;$i<$noise_num;$i++){
imagesetpixel($image,mt_rand(0,$image_x),mt_rand(0,$image_y),$noise_color);
}
//生成验证码
$x=2;
$session_code='';
for($i=0;$i<$length;$i++){
$font_color=imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); //字体颜色
$code=$randChar[mt_rand(0,count($randChar)-1)];
imagettftext($image,$font_size,mt_rand(-6,6),$x,$font_y,$font_color,$font_face,$code);
$x+=30;
$session_code.=$code;
}
//把验证码的值存放到session中
@session_start();
$_SESSION['checkCode']=$session_code;
for($i=0;$i<$line_num;$i++){
$fontcolor=imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagearc($image,mt_rand(-10,$w),mt_rand(-10,$h),mt_rand(30,300),mt_rand(20,200),55,44,$fontcolor);
}//www.scutephp.com/
for($i=0;$i<255;$i++){
$fontcolor=imagecolorallocate($image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imagesetpixel($image,mt_rand(0,$w),mt_rand(0,$h),$fontcolor);
}
imagerectangle($image,0,0,$image_x-1,$image_y-1,$rectangle_color); //加个边框
imagepng($image);
imagedestroy($image);
}

 


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn