Recently, due to project requirements, I need to use Chinese character verification codes, so I researched one and posted the code here to share it with everyone. The following is the specific usage and function code of using PHP to generate Chinese character verification codes.
Usage is as follows:
<?php create_excode(4);//生成四个汉字的验证码
Chinese character verification code picture:
The specific function code is as follows:
<?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.phpernote.com/php-function/1010.html 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); }
Chinese character verification code code download (font file included)