利用php生成验证码
话不多说,请看代码:
<?php /** *php生成验证码 *@param$width画布宽 *@param$height画布高 *@param$vcodelen验证码长度 *@param$pointnum干扰像素点数量 *@param$linenum干扰线条数量 * *思路:创建验证码画布,生成并填充背景色,生成验证码内容/干扰像素点/线,填充到画布,输出。 */ $width=100; $height=30; $vcodelen=4; $pointnum=200; $linenum=3; //创建画布 $image=imagecreatetruecolor($width,$height); //创建色块 $bgcolor=imagecolorallocate($image,255,255,255); //填充画布背景色 imagefill($image,0,0,$bgcolor); //验证码内容 for($i=0;$i<$vcodelen;$i++){ //字体大小 $fontsize=5; //字体颜色,颜色在限定范围内随机 $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data='abcdefghijklmnopqrstuvwxyz0123456789'; //验证码内容在以上字符串内随机截取 $fontcontent=substr($data,rand(0,strlen($data)),1); //字符串显示位置 $x=($i*$width/4)+rand(5,15); $y=rand(5,10); //字符串填充图片 //imagestring的字体大小可选1-5,字体再大需要用imagettftext函数(需要字体文件) imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); //imagettftext($image,$fontsize,0,$x,$y,$fontcolor,'/font/Geneva.dfont',$fontcontent); } //干扰像素点 for($i=0;$i<$pointnum;$i++){ $pointcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); //画布填充像素点函数 imagesetpixel($image,rand(0,$width),rand(0,$height),$pointcolor); } //干扰线条 for($i=0;$i<$linenum;$i++){ $linecolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); //画布填充线条函数 imageline($image,rand(0,$width),rand(0,$height),rand(0,$width),rand(0,$height),$linecolor); } //图片输出格式 header('content-type:image/png'); //输出验证码图片 imagepng($image); //销毁画布 imagedestroy($image); ?>
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持毛票票!