推荐一款php验证码程序

分享一款比较好的php验证码程序,有需要的朋友参考一下,代码如下:

  1. <?php
  2. /* 网站验证码程序
  3. * 运行环境: PHP5.0.18 下调试通过
  4. * 需要 gd2 图形库支持(PHP.INI中 php_gd2.dll开启)
  5. * 文件名: showimg.php
  6. * 作者: phpfensi.com
  7. * Date: 2007.03
  8. */
  9. //随机生成一个4位数的数字验证码
  10. $num="";
  11. for($i=0;$i<4;$i++){
  12. $num .= rand(0,9);
  13. }
  14. //4位验证码也可以用rand(1000,9999)直接生成
  15. //将生成的验证码写入session,备验证页面使用
  16. Session_start();
  17. $_SESSION["Checknum"] = $num;
  18. //创建图片,定义颜色值
  19. Header("Content-type: image/PNG");
  20. srand((double)microtime()*1000000);
  21. $im = imagecreate(60,20);
  22. $black = ImageColorAllocate($im, 0,0,0);
  23. $gray = ImageColorAllocate($im, 200,200,200);
  24. imagefill($im,0,0,$gray);
  25. //随机绘制两条虚线,起干扰作用
  26. $style = array($black, $black, $black, $black, $black, $gray, $gray, $gray, $gray, $gray);
  27. imagesetstyle($im, $style);
  28. $y1=rand(0,20);
  29. $y2=rand(0,20);
  30. $y3=rand(0,20);
  31. $y4=rand(0,20);
  32. imageline($im, 0, $y1, 60, $y3, IMG_COLOR_STYLED);
  33. imageline($im, 0, $y2, 60, $y4, IMG_COLOR_STYLED);
  34. //在画布上随机生成大量黑点,起干扰作用;
  35. for($i=0;$i<80;$i++)
  36. {
  37. imagesetpixel($im, rand(0,60), rand(0,20), $black);
  38. }
  39. //将四个数字随机显示在画布上,字符的水平间距和位置都按一定波动范围随机生成
  40. $strx=rand(3,8);
  41. for($i=0;$i<4;$i++){
  42. $strpos=rand(1,6);
  43. imagestring($im,5,$strx,$strpos, substr($num,$i,1), $black);
  44. $strx+=rand(8,12);
  45. }//开源代码phpfensi.com
  46. ImagePNG($im);
  47. ImageDestroy($im);
  48. ?>

使用方法:本程序可以直接运行,运行之后即可看到一个图形验证码,每次刷新都随机生成新码.

在某页面中使用此程序时,可以用以下代码:

  1. 请输入验证码:
  2. <input type=text name=passcode>
  3. <img src=showimg.php>

这样即可显示出验证码图片,到了验证页面,用以下代码:

  1. $code=$_POST["passcode"];
  2. if( $code == $_SESSION["Checknum"]){
  3. 验证通过
  4. }else{
  5. 验证码错误
  6. }