php加入干扰的生成验证码代码

本款php生成验证码代码原理生成随机数-->创建图片-->随机数写进图片-->保存在session中,看一下流程验证码图片生成 通知浏览器将要输出PNG图片,准备好随机数发生器种子 srand((double)microtime()*1000000); 将四位整数验证码绘入图片.

php加入干扰的生成验证码代码如下:

  1. /*=====================
  2. 产生随机字符串函数
  3. =====================*/
  4. function random($length) {
  5. $hash = '';
  6. $chars = 'abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz';
  7. $max = strlen($chars) - 1;
  8. mt_srand((double)microtime() * 1000000);
  9. for($i = 0; $i < $length; $i++) {
  10. $hash .= $chars[mt_rand(0, $max)];
  11. }
  12. return $hash;
  13. }
  14. //验证码图片生成
  15. session_start();
  16. //通知浏览器将要输出png图片
  17. header("content-type: image/png");
  18. //准备好随机数发生器种子
  19. //srand((double)microtime()*1000000);
  20. //准备图片的相关参数
  21. $im = imagecreate(62,22);
  22. $black = imagecolorallocate($im, 0,0,0); //rgb黑色标识符
  23. $white = imagecolorallocate($im, 255,255,255); //rgb白色标识符
  24. $gray = imagecolorallocate($im, 179,183,185); //rgb灰色标识符
  25. //开始作图
  26. imagefill($im,0,0,$gray);
  27. //while(($randval=rand()%100000)<10000);{
  28. //$_session["check_code"] = $randval;
  29. //将四位整数验证码绘入图片
  30. $randval=random(4);
  31. $_session["check_code"]=$randval;
  32. imagestring($im, 5, 10, 3, $randval, $white);
  33. //}
  34. //加入干扰象素
  35. for($i=0;$i<150;$i++){
  36. $randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  37. imagesetpixel($im, rand()%70 , rand()%30 , $white);
  38. } //开源代码phpfensi.com
  39. //输出验证图片
  40. imagepng($im);
  41. //销毁图像标识符
  42. imagedestroy($im);