首页 > 语言 > PHP > 正文

利用php生成验证码

2024-09-04 11:44:41
字体:
来源:转载
供稿:网友
  1. <?php 
  2. /** 
  3.  * php生成<a href="http://www.Vevb.com/zhuanti/yanzhengma/" class="anchor" target="_blank">验证码</a> 
  4.  * @param $width 画布宽 
  5.  * @param $height 画布高 
  6.  * @param $vcodelen 验证码长度 
  7.  * @param $pointnum 干扰像素点数量 
  8.  * @param $linenum 干扰线条数量 
  9.  * 
  10.  * 思路:创建验证码画布,生成并填充背景色,生成验证码内容/干扰像素点/线,填充到画布,输出。 
  11.  */ 
  12.  $width= 100; 
  13.  $height= 30; 
  14.  $vcodelen= 4; 
  15.  $pointnum= 200; 
  16.  $linenum= 3; 
  17.  // 创建画布 
  18.  $image= imagecreatetruecolor($width,$height); 
  19.  // 创建色块 
  20.  $bgcolor= imagecolorallocate($image, 255, 255, 255); 
  21.  // 填充画布背景色 
  22.  imagefill($image, 0, 0,$bgcolor); 
  23.  // 验证码内容 
  24.  for($i=0;$i<$vcodelen;$i++) { 
  25.   // <a href="/tags.php/%D7%D6%CC%E5%B4%F3%D0%A1/" target="_blank">字体大小</a> 
  26.   $fontsize= 5; 
  27.   // 字体颜色,颜色在限定范围内随机 
  28.   $fontcolor= imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); 
  29.   $data='abcdefghijklmnopqrstuvwxyz0123456789' 
  30.   // 验证码内容在以上字符串内随机截取 
  31.   $fontcontent=<a href="/tags.php/substr/" target="_blank">substr</a>($data, rand(0,strlen($data)),1); 
  32.   // 字符串显示位置 
  33.   $x= ($i*$width/4)+rand(5,15); 
  34.   $y= rand(5,10); 
  35.   // 字符串填充图片 
  36.   // imagestring的字体大小可选1-5,字体再大需要用imagettftext函数(需要字体文件) 
  37.   imagestring($image,$fontsize,$x,$y,$fontcontent,$fontcolor); 
  38.   // imagettftext($image, $fontsize, 0, $x, $y, $fontcolor, '/font/Geneva.dfont', $fontcontent); 
  39.  } 
  40.  // 干扰像素点 
  41.  for($i=0;$i<$pointnum;$i++) { 
  42.   $pointcolor= imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); 
  43.   // 画布填充像素点函数 
  44.   imagesetpixel($image, rand(0,$width), rand(0,$height),$pointcolor); 
  45.  } 
  46.  // 干扰线条 
  47.  for($i=0;$i<$linenum;$i++) { 
  48.   $linecolor= imagecolorallocate($image, rand(0,120), rand(0,120), rand(0,120)); 
  49.   // 画布填充线条函数 
  50.   imageline($image, rand(0,$width), rand(0,$height), rand(0,$width), rand(0,$height),$linecolor); 
  51.  } 
  52.  // 图片输出格式 
  53.  header('content-type: image/png'); 
  54.  // 输出验证码图片 
  55.  imagepng($image); 
  56.  // 销毁画布 
  57.  imagedestroy($image); 
  58. ?> 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表