当前位置:首页 > PHP教程 > php函数 > 列表

php生成带干扰的验证码程序

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-23 14:56:14 浏览: 评论:0 

这里介绍了一款安全性比较高的验证生成程序,可以带干扰线等内容,可以有效的防止用户用程序识别验证码的难度了,代码如下:

  1. <?php 
  2. /* 
  3.  * Created on 2011-3-11 
  4.  * Programmer : xiaoyao, QQ:1045195056 
  5.  验证通过判断输入值与$_SESSION['check_pic']值 
  6.  */ 
  7. session_start(); 
  8.  function RandAscii($number){//$number产生数字和字母个数 
  9. $arr=array('0','1','2','3','4','5','6','7','8','9'
  10. 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','w','v','u','x','y','z'); 
  11. for ($i=1;$i<=$number;$i++) 
  12. $rand$rand.$arr[rand(0,35)]; 
  13. return $rand
  14.  $rand=RandAscii(4); 
  15.  
  16. $_SESSION['check_pic']=$rand;//随机产生的四个数赋值session中,用于验证。 
  17. $x=80; 
  18. $y=24; 
  19.  $im=imagecreatetruecolor($x,$y);//创建图片 
  20. $bg=imagecolorallocate($im,255,255,255);//设置颜色背景 
  21. imagefill( $im,0,0,$bg); 
  22. $wh=imagecolorallocate($im,255,255,0); 
  23. $grey=imagecolorallocate($im,128,128,128); 
  24. $yellow=imagecolorallocate($im,255,255,0); 
  25. $red=imagecolorallocate($im,0,255,0); 
  26. $foregroundArr = array(imagecolorallocate($im, rand(0, 20), rand(0, 20), rand(0, 20)), 
  27.   imagecolorallocate($im, rand(0, 20), rand(0, 10), rand(245, 255)), 
  28.   imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(0, 10)), 
  29.   imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(245, 255)) 
  30.  );//字颜色数组 
  31.  //画边框 
  32.  $border = imagecolorallocate($im, 133, 153, 193); 
  33.  imagerectangle($im, 0, 0, $x - 1, $y - 1, $border); 
  34.  
  35. for($i=0;$i<10;$i++){        //画干扰线,10条 
  36. imageline($im,rand(0,60),2,rand(0,60),20,$yellow); 
  37.  
  38. for($j=0;$j<100;$j++){ 
  39.  imagesetpixel($im,rand()%76,rand()%20,$red); 
  40. //imagestring($im,6,15,8,$rand,$wh);//字体大小1-5 
  41. imagettftext($im, 14,rand(30, -30), 5, rand(15, 18) ,$foregroundArr[rand(0,3)], 'C:WindowsFontsArial.ttf',$rand[0]); 
  42. imagettftext($im, 14,rand(50, -50), 24, rand(15, 18),$foregroundArr[rand(0,3)], 'C:WindowsFontsArial.ttf',$rand[1]); 
  43. imagettftext($im, 14,rand(50, -50), 43, rand(15, 18) ,$foregroundArr[rand(0,3)], 'C:WindowsFontsArial.ttf',$rand[2]); 
  44. imagettftext($im, 14,rand(30, -30), 62, rand(15, 18),$foregroundArr[rand(0,3)], 'C:WindowsFontsArial.ttf',$rand[3]); 
  45. //开源代码phpfensi.com 
  46. header("Content-type: image/jpeg");//输出图片 
  47. imagejpeg($im); 
  48. imagedestroy($im); 
  49. ?> 

调用方法,代码如下:

  1. <?php 
  2. /* 
  3.  * Created on 2011-3-11 
  4.  * Programmer : xiaoyao, QQ:1045195056 
  5.  验证通过判断输入值与$_SESSION['check_pic']值 
  6.  */ 
  7. session_start();//开启session 
  8. if(isset($_POST['check'])) 
  9. if($_POST['check']) 
  10.  { 
  11. if($_POST['check']==$_SESSION['check_pic']) 
  12.  { 
  13.  echo " 验证码正确".$_SESSION['check_pic']; 
  14.  } 
  15. else 
  16.  { 
  17.  echo " 验证码错误".$_SESSION['check_pic']; 
  18.  } 
  19. ?> 
  20. <FORM METHOD=POST ACTION=""
  21. <img src="index.php"><br>    <!----链接图片---> 
  22. <input type="text" name="check" > 
  23. <input type="submit" value="提交"
  24. </FORM> 

Tags: php生成验证码 php验证码类

分享到:

相关文章