欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-05-29 19:14:06
...
  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. ?>
复制代码