菜单

php汉字验证码-中文验证码-支持uft8和gbk

2010年04月8日 - php

php汉字验证码-中文验证码-支持uft8和gbk

 

uft8 案例

 

  1. <?php  
  2. define(‘WWW.PHPZY.COM’, ‘WWW.PHPZY.COM’);  
  3. function verify($user_str){//从cookie中对比用户的输入  
  4.         if(md5($cookie_str.WWW.PHPZY.COM)==$_COOKIE[‘vrify’])  
  5.                 return 1;  
  6.         else 
  7.                 return 0;  
  8. }  
  9. function c2ch($num){  
  10.   $ch_h = chr(substr($num,0,2)+160);  
  11.   $ch_l = chr(substr($num,2,2)+160);  
  12.   return $ch_h.$ch_l;  
  13. }  
  14. function num_rand(){  
  15.         mt_srand((double)microtime() * 1000000);  
  16.         $d= mt_rand(16,36);  
  17.         $n= mt_rand(1,19);  
  18.         return c2ch($d*100+$n);  
  19. }  
  20.  
  21. $k[0]=num_rand();  
  22. $k[1]=num_rand();  
  23. $k[2]=num_rand();  
  24. $k[3]=num_rand();  
  25. //print_r($k);  
  26. $cookie_str=implode(”, $k);  
  27. setcookie(‘vrify’,md5($cookie_str.WWW.PHPZY.COM),time()+600);  
  28. $str[0]=iconv(‘gb2312′,’UTF-8’,$k[0]);  
  29. $str[1]=iconv(‘gb2312′,’UTF-8’,$k[1]);  
  30. $str[2]=iconv(‘gb2312′,’UTF-8’,$k[2]);  
  31. $str[3]=iconv(‘gb2312′,’UTF-8’,$k[3]);  
  32. //构造图像  
  33. $x_size=80;  
  34. $y_size=25;  
  35.  
  36. $font=’heiti.ttf’;  
  37. $pic=imagecreate($x_size,$y_size);  
  38. $background_color = imagecolorallocate ($pic, 255, 255, 255);  
  39. $black=imagecolorallocate($pic,0,0,0);  
  40. $red=imagecolorallocate($pic,255,0,0);  
  41. $ddd=imagecolorallocate($pic,255,0,255);  
  42. imagettftext($pic,15,mt_rand(-8,8),6,mt_rand(19,22),$black,$font,$str[0]);  
  43. imagettftext($pic,15,mt_rand(-8,8),37,20,$black,$font,$str[2]);  
  44. imagettftext($pic,mt_rand(15,17),mt_rand(-8,8),22,20,$ddd,$font,$str[1]);  
  45. imagettftext($pic,mt_rand(15,17),mt_rand(-8,8),54,mt_rand(19,22),$red,$font,$str[3]);  
  46. imagerectangle($pic, 0, 0, $x_size – 1, $y_size – 1,$black);  
  47. Imagepng($pic);  
  48. ImageDestroy($pic);  
  49. ?>  
  50.  

 

gbk案例

 

 

  1. <?php  
  2. error_reporting(0);  
  3. session_start();  
  4.  
  5. Header("Content-type: image/PNG");  
  6. $str = "的一是在了不和有大这主中人上为们地个用工时要动国产以我到他会作来分生对于学下级就年";  
  7. $imgWidth = 130;  
  8. $imgHeight = 40;  
  9. $authimg = imagecreate($imgWidth,$imgHeight);  
  10. $bgColor = ImageColorAllocate($authimg,255,255,255);  
  11. $fontfile = "simhei.ttf";  
  12. $white=imagecolorallocate($authimg,234,185,95);  
  13. imagearc($authimg, 150, 8, 20, 20, 75, 170, $white);  
  14. imagearc($authimg, 180, 7,50, 30, 75, 175, $white);  
  15. imageline($authimg,20,20,180,30,$white);  
  16. imageline($authimg,20,18,170,50,$white);  
  17. imageline($authimg,25,50,80,50,$white);  
  18. $noise_num = 800;  
  19. $line_num = 20;  
  20. imagecolorallocate($authimg,0xff,0xff,0xff);  
  21. $rectangle_color=imagecolorallocate($authimg,0xAA,0xAA,0xAA);  
  22. $noise_color=imagecolorallocate($authimg,0x00,0x00,0x00);  
  23. $font_color=imagecolorallocate($authimg,0x00,0x00,0x00);  
  24. $line_color=imagecolorallocate($authimg,0x00,0x00,0x00);  
  25. for($i=0;$i<$noise_num;$i++){  
  26.     imagesetpixel($authimg,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$noise_color);  
  27. }  
  28. for($i=0;$i<$line_num;$i++){  
  29.     imageline($authimg,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$line_color);  
  30. }  
  31. $randnum=rand(0,strlen($str)-4);  
  32. if($randnum%2)$randnum+=1;  
  33. $str = substr($str,$randnum,8);  
  34.  
  35. $_SESSION[chart]=$str;  
  36.  
  37. //$str = iconv("GB2312","UTF-8",$str);  
  38.  
  39. ImageTTFText($authimg, 20, 0, 16, 30, $font_color, $fontfile, $str);  
  40. //ImagePNG($authimg);  
  41. //ImageDestroy($authimg);  
  42.  
  43. @header("Expires: -1");  
  44. @header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);  
  45. @header("Pragma: no-cache");  
  46. header(‘Content-Type: image/jpeg’);  
  47. imagepng($authimg);  
  48. ?>  
  49.  

记得放字体!没有字体随便去控制面板-字体-复制一个过来就可以使用了

 

http://www.phpzy.com/phpjichuwenda/336.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注