>  기사  >  백엔드 개발  >  php自定义大小验证码的实例代码

php自定义大小验证码的实例代码

WBOY
WBOY원래의
2016-07-25 08:59:04701검색
  1. /**

  2. * php 验证码 可自定义大小
  3. * edit bbs.it-home.org
  4. */
  5. function vCode($num=4,$size=20, $width=0,$height=0){
  6. !$width && $width = $num*$size*4/5+5;
  7. !$height && $height = $size + 10;
  8. // 去掉了 0 1 O l 等
  9. $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW";
  10. $code = '';
  11. for ($i=0; $i$code.= $str[mt_rand(0, strlen($str)-1)];
  12. }
  13. // 画图像
  14. $im = imagecreatetruecolor($width,$height);
  15. // 定义要用到的颜色
  16. $back_color = imagecolorallocate($im, 235, 236, 237);
  17. $boer_color = imagecolorallocate($im, 118, 151, 199);
  18. $text_color = imagecolorallocate($im, mt_rand(0,200), mt_rand(0,120), mt_rand(0,120));
  19. // 画背景

  20. imagefilledrectangle($im,0,0,$width,$height,$back_color);
  21. // 画边框
  22. imagerectangle($im,0,0,$width-1,$height-1,$boer_color);
  23. // 画干扰线
  24. for($i=0;$i$font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
  25. imagearc($im,mt_rand(-$width,$width),mt_rand(-$height,$height),mt_rand(30,$width*2),mt_rand(20,$height*2),mt_rand(0,360),mt_rand(0,360),$font_color);
  26. }
  27. // 画干扰点
  28. for($i=0;$i$font_color = imagecolorallocate($im, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
  29. imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$font_color);
  30. }
  31. // 画验证码
  32. @imagefttext($im, $size , 0, 5, $size+3, $text_color, 'c://WINDOWS//Fonts//simsun.ttc',$code);
  33. header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate");
  34. header("Content-type: image/png");
  35. imagepng($im);
  36. imagedestroy($im);
  37. }
  38. ?>
复制代码

调用示例:

  1. // 验证码示例
  2. //4个字符,大小为20
  3. vCode(4,20);
  4. ?>
复制代码


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.