最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

個(gè)人寫(xiě)的PHP驗(yàn)證碼生成類(lèi)分享

 更新時(shí)間:2014年08月21日 08:51:58   投稿:junjie  
這篇文章主要介紹了個(gè)人寫(xiě)的PHP驗(yàn)證碼生成類(lèi)分享,此驗(yàn)證碼類(lèi)直接拿去就可以用,也可以用來(lái)學(xué)習(xí)和分析,需要的朋友可以參考下

此驗(yàn)證碼類(lèi)直接拿去就可以用,也可以參考!

其中類(lèi)成員codestr是生成的驗(yàn)證碼字符串:

<?php
/**
 * 驗(yàn)證碼
 */
class Code{
 
  // 1. 定義各個(gè)成員 有寬、高、畫(huà)布、字?jǐn)?shù)、類(lèi)型、畫(huà)類(lèi)型
   
  private $width; //寬度
  private $height; //高度
  private $num; //驗(yàn)證碼字?jǐn)?shù)
  private $imgType; //生成圖片類(lèi)型
  private $Type; //字串類(lèi)型 1,2,3 三個(gè)選項(xiàng) 1 純數(shù)字 2 純小寫(xiě)字母 3 大小寫(xiě)數(shù)字混合
  private $hb; //畫(huà)布
  public $codestr; // 驗(yàn)證碼字串
 
  public function __construct($height=20,$num=4,$imgType="jpeg",$Type=1){
    $this->width = $num*20;
    $this->height = $height;
    $this->num = $num;
    $this->imgType = $imgType;  
    $this->Type = $Type; 
    $this->codestr = $this->codestr();
    $this->zuhe();
  }
 
  // 2. 定義隨機(jī)獲取字符串函數(shù)
  private function codestr(){
    switch($this->Type){
     
      case 1:   // 類(lèi)型為1 獲取1-9隨機(jī)數(shù)
        $str = implode("",array_rand(range(0,9),$this->num));
        break;
      case 2:   // 類(lèi)型為2 獲取a-z隨機(jī)小寫(xiě)字母
        $str = implode("",array_rand(array_flip(range(a,z)),$this->num));
        break;
      case 3:   // 類(lèi)型為3 獲取數(shù)字,小寫(xiě)字母,大寫(xiě)字母 混合
        for($i=0;$i<$this->num;$i++){
          $m = rand(0,2);
          switch($m){
            case 0:
              $o = rand(48,57);
              break;
            case 1:
              $o = rand(65,90);
              break;
            case 2:
              $o = rand(97,122);
              break; 
          }
          $str .= sprintf("%c",$o);
        }
        break;     
    }
 
     
    return $str;  
  }
 
 
  // 3. 初始化畫(huà)布圖像資源
  private function Hb(){
    $this->hb = imagecreatetruecolor($this->width,$this->height); 
  }
 
  // 4. 生成背景顏色
  private function Bg(){
    return imagecolorallocate($this->hb,rand(130,250),rand(130,250),rand(130,250)); 
  }
 
  // 5. 生成字體顏色
  private function Font(){
    return imagecolorallocate($this->hb,rand(0,100),rand(0,100),rand(0,100));  
  }
 
  // 6. 填充背景顏色
  private function BgColor(){
    imagefilledrectangle($this->hb,0,0,$this->width,$this->height,$this->Bg()); 
  }
 
  // 7. 干擾點(diǎn)
  private function ganrao(){
    $sum=floor(($this->width)*($this->height)/3);
    for($i=0;$i<$sum;$i++){
      imagesetpixel($this->hb,rand(0,$this->width),rand(0,$this->height),$this->Bg());  
    }
  }
 
  // 8. 隨機(jī)直線 弧線
  private function huxian(){
    for($i=0;$i<$this->num;$i++){
      imageArc($this->hb,rand(0,$this->width),rand(0,$this->height),rand(0,$this->width),rand(0,$this->height),rand(0,360),rand(0,360),$this->Bg());    
    }  
  }
 
  // 9. 寫(xiě)字
  private function xiezi(){
    for($i=0;$i<$this->num;$i++){
      $x=ceil($this->width/$this->num)*$i; 
      $y=rand(1,$this->height-15);
      imagechar($this->hb,5,$x+4,$y,$this->codestr[$i],$this->Font());
    }  
  }
 
  // 10. 輸出
  private function OutImg(){
    $shuchu="image".$this->imgType; 
    $header="Content-type:image/".$this->imgType;
    if(function_exists($shuchu)){
      header($header);
      $shuchu($this->hb); 
    }else{
      exit("GD庫(kù)沒(méi)有此類(lèi)圖像"); 
    }
  }
 
  // 11. 拼裝
  private function zuhe(){
    $this->Hb();
    $this->BgColor();
    $this->ganrao();
    $this->huxian();
    $this->xiezi();
    $this->OutImg(); 
  }  
 
  public function getCodeStr(){
    return $this->codestr;    
  }
}
?>

相關(guān)文章

最新評(píng)論

苏尼特左旗| 金昌市| 余庆县| 鹤山市| 博兴县| 绥中县| 梅州市| 湟中县| 资溪县| 海口市| 特克斯县| 冷水江市| 克拉玛依市| 遂川县| 嵊泗县| 沁阳市| 嘉禾县| 蓝山县| 南澳县| 大石桥市| 洞头县| 安西县| 巴楚县| 石门县| 伊春市| 怀安县| 宝应县| 保德县| 南丹县| 伊川县| 清镇市| 南丰县| 望谟县| 卓尼县| 广汉市| 北碚区| 延吉市| 阿克| 海南省| 岚皋县| 米脂县|