首页 > 语言 > PHP > 正文

php中文与英文验证码程序代码

2024-09-04 11:44:33
字体:
来源:转载
供稿:网友

英文验证码相对简单,不要作hex处理,直接用色彩值就OK了,yzm.php实例代码如下:

  1. session_start(); 
  2. function rand_create()  
  3. {  
  4.     //通知浏览器将要输出PNG图片  
  5.     Header("Content-type: image/PNG");  
  6.     //准备好随机数发生器种子   
  7.     srand((double)microtime()*1000000);  
  8.     //准备图片的相关参数    
  9.     $im = imagecreate(62,22);  
  10.     $black = ImageColorAllocate($im, 0,0,0);  //RGB黑色标识符  
  11.     $white = ImageColorAllocate($im, 255,255,255); //RGB白色标识符  
  12.     $gray = ImageColorAllocate($im, 200,200,200); //RGB灰色标识符  
  13.     //开始作图      
  14.     imagefill($im,0,0,$gray);  
  15.     while(($randval=rand()%100000)<10000);{  
  16.         $_SESSION["Auth_code"] = $randval;  
  17.         //将四位整数验证码绘入图片   
  18.         imagestring($im, 5, 10, 3, $randval$black);  
  19.     }  
  20.     //加入干扰象素     
  21.     for($i=0;$i<200;$i++){  
  22.         $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); //开源代码Vevb.com 
  23.         imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);  
  24.     }  
  25.     //输出验证图片  
  26.     ImagePNG($im);  
  27.     //销毁图像标识符  
  28.     ImageDestroy($im);  
  29. }  
  30. rand_create(); 

调用方法<img src=yzm.php />

中文验证码程序如下:

  1. Header("Content-type: image/PNG"); 
  2. $str = "这里设置一中文如果中国WEB第一站www.Vevb.com"
  3. $imagesW = 140; 
  4. $imagesH = 40; 
  5. //  
  6. $Auimg = imagecreate($imagesW,$imagesH); 
  7. $bgc = ImageColorAllocate($Auimg,255,255,255); 
  8. $font = "heiti.ttf";//这里设置字体,你可以随便下载一款字体哦。 
  9. $white=imagecolorallocate($Auimg,234,185,95); 
  10. imagearc($Auimg, 150, 8, 20, 20, 75, 170, $white); 
  11. imagearc($Auimg, 180, 7,50, 30, 75, 175, $white); 
  12. imageline($Auimg,20,20,180,30,$white); 
  13. imageline($Auimg,20,18,170,50,$white); 
  14. imageline($Auimg,25,50,80,50,$white); 
  15. $noise_num = 800; 
  16. $line_num = 20; 
  17. imagecolorallocate($Auimg,0xff,0xff,0xff); 
  18. $rectangle_color=imagecolorallocate($Auimg,0xAA,0xAA,0xAA); 
  19. $noise_color=imagecolorallocate($Auimg,0x00,0x00,0x00); 
  20. $font_color=imagecolorallocate($Auimg,0x00,0x00,0x00); 
  21. $line_color=imagecolorallocate($Auimg,0x00,0x00,0x00); 
  22. for($i=0;$i<$noise_num;$i++){ 
  23.  imagesetpixel($Auimg,mt_rand(0,$imagesW),mt_rand(0,$imagesH),$noise_color); 
  24. for($i=0;$i<$line_num;$i++){ 
  25.  imageline($Auimg,mt_rand(0,$imagesW),mt_rand(0,$imagesH),mt_rand(0,$imagesW),mt_rand(0,$imagesH),$line_color); 
  26. $mtRnd=rand(0,strlen($str)-4); 
  27. if($mtRnd%2)$mtRnd+=1; 
  28. $str = substr($str,$mtRnd,8); 
  29. $str = iconv("GB2312","UTF-8",$str); 
  30. ImageTTFText($Auimg, 20, 0, 16, 30, $font_color$font$str); 
  31. ImagePNG($Auimg); 
  32. ImageDestroy($Auimg); 

共同点就是验证码都借助于其它容器来保存如session,cookie等,否则就没有验证的意义了.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表