亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

支持中文字母數字、自定義字體php驗證碼程序

2024-09-04 11:44:06
字體:
來源:轉載
供稿:網友

驗證碼常用于登陸頁面、留言頁面、注冊頁面,驗證碼的原理很簡單:利用GD庫創建一個圖片,圖片當然要加上必要的干擾碼,然后在服務器端存入SESSION,等用戶提交的時候判斷session是否相同.

支持中文字母數字、自定義字體php驗證碼程序代碼如下:

  1. <?php 
  2. /* 
  3. * Captcha Class base on PHP GD Lib 
  4. * @author Design 
  5. * @version 1.0 
  6. * @copyright js8.in 2010 
  7. * @demo 
  8. * include('captchaClass.php'); 
  9. * $captchaDemo=new Captcha(); 
  10. * $captchaDemo->createImage(); 
  11. */ 
  12. class Captcha{ 
  13.  //@定義驗證碼圖片高度 
  14.  private $height
  15.  //@定義驗證碼圖片寬度 
  16.  private $width
  17.  //@定義驗證碼字符個數 
  18.  private $textNum
  19.  //@定義驗證碼字符內容 
  20.  private $textContent
  21.  //@定義字符顏色 
  22.  private $fontColor
  23.  //@定義隨機出的文字顏色 
  24.  private $randFontColor
  25.  //@定義字體大小 
  26.  private $fontSize
  27.  //@定義字體 
  28.  private $fontFamily
  29.  //@定義背景顏色 
  30.  private $bgColor
  31.  //@定義隨機出的背景顏色 
  32.  private $randBgColor
  33.  //@定義字符語言 
  34.  private $textLang
  35.  //@定義干擾點數量 
  36.  private $noisePoint
  37.  //@定義干擾線數量 
  38.  private $noiseLine
  39.  //@定義是否扭曲 
  40.  private $distortion
  41.  //@定義扭曲圖片源 
  42.  private $distortionImage
  43.  //@定義是否有邊框 
  44.  private $showBorder
  45.  //@定義驗證碼圖片源 
  46.  private $image
  47.   
  48.  //@Constructor 構造函數 
  49.  public function Captcha(){ 
  50.  $this->textNum=4; 
  51.  $this->fontSize=16; 
  52.  $this->fontFamily='c:/windows/fontsSIMYOU.ttf';//設置中文字體,可以改成linux的目錄 
  53.  $this->textLang='en'
  54.  $this->noisePoint=30; 
  55.  $this->noiseLine=3; 
  56.  $this->distortion=false; 
  57.  $this->showBorder=false; 
  58.  } 
  59.  
  60.  
  61.   
  62.  //@設置圖片寬度 
  63.  public function setWidth($w){ 
  64.  $this->width=$w
  65.  } 
  66.   
  67.  //@設置圖片高度 
  68.  public function setHeight($h){ 
  69.  $this->height=$h
  70.  } 
  71.   
  72.  //@設置字符個數 
  73.  public function setTextNumber($textN){ 
  74.  $this->textNum=$textN
  75.  } 
  76.   
  77.  //@設置字符顏色 
  78.  public function setFontColor($fc){ 
  79.  $this->fontColor=sscanf($fc,'#%2x%2x%2x'); 
  80.  } 
  81.   
  82.  //@設置字號 
  83.  public function setFontSize($n){ 
  84.  $this->fontSize=$n
  85.  } 
  86.   
  87.  //@設置字體 
  88.  public function setFontFamily($ffUrl){ 
  89.  $this->fontFamily=$ffUrl
  90.  } 
  91.   
  92.  //@設置字符語言 
  93.  public function setTextLang($lang){ 
  94.  $this->textLang=$lang
  95.  } 
  96.   
  97.  //@設置圖片背景 
  98.  public function setBgColor($bc){ 
  99.  $this->bgColor=sscanf($bc,'#%2x%2x%2x'); 
  100.  } 
  101.   
  102.  //@設置干擾點數量 
  103.  public function setNoisePoint($n){ 
  104.  $this->noisePoint=$n
  105.  } 
  106.   
  107.  //@設置干擾線數量 
  108.  public function setNoiseLine($n){ 
  109.  $this->noiseLine=$n
  110.  } 
  111.   
  112.  //@設置是否扭曲 
  113.  public function setDistortion($b){ 
  114.  $this->distortion=$b
  115.  } 
  116.   
  117.  //@設置是否顯示邊框 
  118.  public function setShowBorder($border){ 
  119.  $this->showBorder=$border
  120.  } 
  121.   
  122.  //@初始化驗證碼圖片 
  123.  public function initImage(){ 
  124.  if(emptyempty($this->width)){$this->width=floor($this->fontSize*1.3)*$this->textNum+10;} 
  125.  if(emptyempty($this->height)){$this->height=$this->fontSize*2;} 
  126.  $this->image=imagecreatetruecolor($this->width,$this->height); 
  127.  if(emptyempty($this->bgColor)){ 
  128.  $this->randBgColor=imagecolorallocate($this->image,mt_rand(100,255),mt_rand(100,255),mt_rand(100,255)); 
  129.  }else
  130.  $this->randBgColor=imagecolorallocate($this->image,$this->bgColor[0],$this->bgColor[1],$this->bgColor[2]); 
  131.  } 
  132.  imagefill($this->image,0,0,$this->randBgColor); 
  133.  } 
  134.   
  135.  //@產生隨機字符 
  136.  public function randText($type){ 
  137.  $string=''
  138.  switch($type){ 
  139.  case 'en'
  140.  $str='ABCDEFGHJKLMNPQRSTUVWXY3456789'
  141.  for($i=0;$i<$this->textNum;$i++){ 
  142.  $string=$string.','.$str[mt_rand(0,29)]; 
  143.  } 
  144.  break
  145.  case 'cn'
  146.  for($i=0;$i<$this->textNum;$i++) { 
  147.  $string=$string.','.chr(rand(0xB0,0xCC)).chr(rand(0xA1,0xBB)); 
  148.  } 
  149.  $string=iconv('GB2312','UTF-8',$string); //轉換編碼到utf8 
  150.  break
  151.  } 
  152.  return substr($string,1); 
  153.  } 
  154.   
  155.  //@輸出文字到驗證碼 
  156.  public function createText(){ 
  157.  $textArray=explode(',',$this->randText($this->textLang)); 
  158.  $this->textContent=join('',$textArray); 
  159.  if(emptyempty($this->fontColor)){ 
  160.  $this->randFontColor=imagecolorallocate($this->image,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100)); 
  161.  }else
  162.  $this->randFontColor=imagecolorallocate($this->image,$this->fontColor[0],$this->fontColor[1],$this->fontColor[2]); 
  163.  } 
  164.  for($i=0;$i<$this->textNum;$i++){ 
  165.  $angle=mt_rand(-1,1)*mt_rand(1,20); 
  166.  imagettftext($this->image,$this->fontSize,$angle,5+$i*floor($this->fontSize*1.3),floor($this->height*0.75),$this->randFontColor,$this->fontFamily,$textArray[$i]); 
  167.  } 
  168.  } 
  169.   
  170.  //@生成干擾點 
  171.  public function createNoisePoint(){ 
  172.  for($i=0;$i<$this->noisePoint;$i++){ 
  173.  $pointColor=imagecolorallocate($this->image,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); 
  174.  imagesetpixel($this->image,mt_rand(0,$this->width),mt_rand(0,$this->height),$pointColor); 
  175.  } 
  176.   
  177.  } 
  178.   
  179.  //@產生干擾線 
  180.  public function createNoiseLine(){ 
  181.  for($i=0;$i<$this->noiseLine;$i++) { 
  182.  $lineColor=imagecolorallocate($this->image,mt_rand(0,255),mt_rand(0,255),20); 
  183.  imageline($this->image,0,mt_rand(0,$this->width),$this->width,mt_rand(0,$this->height),$lineColor); 
  184.  } 
  185.  } 
  186.   
  187.  //@扭曲文字 
  188.  public function distortionText(){ 
  189.  $this->distortionImage=imagecreatetruecolor($this->width,$this->height); 
  190.  imagefill($this->distortionImage,0,0,$this->randBgColor); 
  191.  for($x=0;$x<$this->width;$x++){ 
  192.  for($y=0;$y<$this->height;$y++){ 
  193.  $rgbColor=imagecolorat($this->image,$x,$y); 
  194.  imagesetpixel($this->distortionImage,(int)($x+sin($y/$this->height*2*M_PI-M_PI*0.5)*3),$y,$rgbColor); 
  195.  } 
  196.  } 
  197.  $this->image=$this->distortionImage; 
  198.  } 
  199.   
  200.  //@生成驗證碼圖片 
  201.  public function createImage(){ 
  202.  $this->initImage(); //創建基本圖片 
  203.  $this->createText(); //輸出驗證碼字符 
  204.  if($this->distortion){$this->distortionText();} //扭曲文字 
  205.  $this->createNoisePoint(); //產生干擾點 
  206.  $this->createNoiseLine(); //產生干擾線 
  207.  if($this->showBorder){imagerectangle($this->image,0,0,$this->width-1,$this->height-1,$this->randFontColor);} //添加邊框 
  208.  imagepng($this->image); 
  209.  imagedestroy($this->image); 
  210.  if($this->distortion){imagedestroy($this->$distortionImage);} 
  211.  return $this->textContent; 
  212.  }//開源代碼Vevb.com 
  213.   
  214. ?> 
  215.  
  216. //使用方法: 
  217.  
  218. <?php 
  219. //session_start(); 
  220. header("Content-type:image/png"); 
  221. include('captcha5_class.php'); 
  222. $captcha5=new Captcha(); 
  223.   
  224. //@設置驗證碼寬度 
  225. //$captcha5->setWidth(200); 
  226.   
  227. //@設置驗證碼高度 
  228. //$captcha5->setHeight(50); 
  229.   
  230. //@設置字符個數 
  231. $captcha5->setTextNumber(5); 
  232.   
  233. //@設置字符顏色 
  234. //$captcha5->setFontColor('#ff9900'); 
  235.   
  236. //@設置字號大小 
  237. //$captcha5->setFontSize(25); 
  238.   
  239. //@設置字體 
  240. $captcha5->setFontFamily('c:/windows/fonts/STXINGKA.TTF'); 
  241.   
  242. //@設置語言 
  243. $captcha5->setTextLang('cn'); 
  244.   
  245. //@設置背景顏色 
  246. //$captcha5->setBgColor('#000000'); 
  247.   
  248. //@設置干擾點數量 
  249. //$captcha5->setNoisePoint(600); 
  250.   
  251. //@設置干擾線數量 
  252. //$captcha5->setNoiseLine(10); 
  253.   
  254. //@設置是否扭曲 
  255. //$captcha5->setDistortion(true); 
  256.   
  257. //@設置是否顯示邊框 
  258. $captcha5->setShowBorder(true); 
  259.   
  260. //輸出驗證碼 
  261. $code=$captcha5->createImage(); 
  262. //$_SESSION['captchaCode']['content']=$code; 
  263. //$_SESSION['captchaCode']['time']=microtime(); 
  264. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91网站在线免费观看| 欧美成人一区二区三区电影| 久久精品2019中文字幕| 在线电影欧美日韩一区二区私密| 欧美色另类天堂2015| 精品国产91乱高清在线观看| 国产亚洲精品一区二区| 色综合久综合久久综合久鬼88| 欧美成人午夜激情| 亚洲精品第一国产综合精品| 久久久久久久久久亚洲| 欧美日韩国产中文字幕| 麻豆成人在线看| 97人人模人人爽人人喊中文字| 日韩av中文字幕在线| 一本久久综合亚洲鲁鲁| 久久综合久久美利坚合众国| 欧美日韩免费在线观看| 秋霞成人午夜鲁丝一区二区三区| 日韩av电影免费观看高清| 久久久久www| 91成人福利在线| 国产欧美精品va在线观看| 精品视频—区二区三区免费| 欧美丝袜美女中出在线| 国内伊人久久久久久网站视频| 国产主播在线一区| 国产激情综合五月久久| 亚洲有声小说3d| 亚洲国产精久久久久久| 欧美日韩亚洲激情| 91干在线观看| 北条麻妃在线一区二区| 伊人男人综合视频网| 国产成+人+综合+亚洲欧美丁香花| 欧美国产中文字幕| 欧美激情第99页| 欧美日韩亚洲视频| 亚洲第一精品夜夜躁人人爽| 国产一区二区在线播放| 在线成人激情视频| 久久综合伊人77777蜜臀| 精品中文字幕在线| 日韩精品在线免费观看| 亚洲欧美在线免费观看| 国产亚洲精品美女久久久| 国产精品免费久久久久久| 欧美电影院免费观看| 国产精品久久久久久久一区探花| 国产精品亚洲第一区| 日韩中文综合网| 精品久久中文字幕久久av| 国产精品视频在线播放| 久久精品久久精品亚洲人| 97在线看福利| 久久免费视频在线观看| 亚洲欧美变态国产另类| 日韩免费看的电影电视剧大全| 日韩电影免费在线观看中文字幕| 成人xvideos免费视频| 欧美一区二区三区……| 国产免费久久av| 国产精品第10页| 91精品久久久久久综合乱菊| 日韩av在线一区二区| 国产精品入口夜色视频大尺度| 日韩精品久久久久| 欧美日韩性视频在线| 亚洲韩国日本中文字幕| 一区二区三欧美| 国产主播喷水一区二区| 日韩精品免费电影| 亚洲精品www久久久久久广东| 欧美午夜视频在线观看| 欧美精品videossex88| 亚洲日本aⅴ片在线观看香蕉| 欧美日韩亚洲视频一区| xvideos亚洲人网站| 亚洲人免费视频| 国产在线观看精品| 狠狠躁18三区二区一区| 中文字幕视频一区二区在线有码| 欧美黑人又粗大| 国产欧美日韩免费看aⅴ视频| 日韩一区二区三区在线播放| 成人做爰www免费看视频网站| 久久夜色精品亚洲噜噜国产mv| 国产精品免费一区二区三区都可以| 国产精品免费一区二区三区都可以| 欧美激情高清视频| 国产亚洲精品激情久久| 色久欧美在线视频观看| 亚洲人成在线观| 一区二区三区日韩在线| 色噜噜国产精品视频一区二区| 国产精品第一区| 欧美一区二区三区精品电影| 国产精品欧美亚洲777777| 国内偷自视频区视频综合| 国产精品综合网站| 2019日本中文字幕| 亚洲视频第一页| 91免费电影网站| 亚洲精品国产精品国产自| 国内精品小视频在线观看| 欧美在线观看视频| 亚洲女同精品视频| 日韩免费在线电影| 国产精品视频色| 91香蕉国产在线观看| 在线视频日韩精品| 久久久久成人网| 欧美日韩国产综合新一区| 欧美丰满少妇xxxxx做受| 91网站在线免费观看| 亚洲成人动漫在线播放| 欧美色道久久88综合亚洲精品| 精品国产福利视频| 亚洲精品电影在线观看| 一本色道久久88综合日韩精品| 久久亚洲国产精品| 欧美精品久久久久久久久| 91情侣偷在线精品国产| 欧美精品福利在线| 中文字幕欧美国内| 欧美老少做受xxxx高潮| 午夜欧美大片免费观看| 九九热r在线视频精品| 欧美成人三级视频网站| 久久精品视频导航| 欧美亚洲激情视频| 精品一区二区亚洲| 亚洲free嫩bbb| 久久香蕉精品香蕉| 欧美天天综合色影久久精品| 亚洲香蕉成视频在线观看| 51久久精品夜色国产麻豆| 伦伦影院午夜日韩欧美限制| 国产日韩欧美电影在线观看| 懂色av中文一区二区三区天美| 国产极品jizzhd欧美| 欧美性极品少妇精品网站| 久久激情视频免费观看| 欧美孕妇孕交黑巨大网站| 日韩精品视频观看| 国产日韩欧美在线视频观看| 欧美激情aaaa| 国产日韩欧美综合| 欧美大尺度电影在线观看| 亚洲wwwav| 色香阁99久久精品久久久| 久久精品精品电影网| 欧美日产国产成人免费图片| 日韩在线视频国产| 日韩精品久久久久| 久久精品国产2020观看福利| www.欧美精品一二三区| 亚洲欧洲日本专区| 性色av一区二区三区在线观看| 久久天天躁日日躁| 亚洲国产精品字幕| 日韩免费观看网站| 日韩欧美成人区| 欧美亚洲午夜视频在线观看|