ホームページ  >  記事  >  バックエンド開発  >  PHP イメージ検証コード class_PHP チュートリアル

PHP イメージ検証コード class_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:09:40777ブラウズ

[php]
/**
* 画像認証コードカテゴリ
* イメージタイプの検証コードを生成します。検証コードには数字と大文字が含まれます。MD5 で暗号化された検証コードがセッションに保存されます。 *
* 使用方法:
* $captcha = 新しい Catpcha();
* $captcha->buildAndExportImage();
*
*作者:羅京
*作成時間: 2013-3-27 11:42:12 AM
​*/
クラス キャプチャ {

プライベート $width;//幅
プライベート $height; //身長
Private $codeNum;//確認コードの文字数
Private $image;//検証コード画像リソース
Private $sessionKey;//セッションに保存された名前
Private $captcha;//検証コード文字列
const charWidth = 10;//出力文字サイズに応じて1文字の幅が変わります

/**
* 検証コードクラスを作成し、関連パラメータを初期化します
* @param $width 画像幅
* @param $height 画像の高さ
* @param $codeNum 確認コードの文字数
* @param $sessionKey セッションに保存された名前
​​*/
関数 __construct($width = 50, $height = 20, $codeNum = 4, $sessionKey = 'captcha') {
$this->width = $width; $this->height = $height; $this->codeNum = $codeNum; $this->sessionKey = $sessionKey;
//最小の高さと幅を保証します
if($height < 20) {
$this->高さ = 20; }
If($width < ($codeNum * self::charWidth + 10)) {//左側と右側に 5 ピクセルのギャップを確保します
$this->width = $codeNum * self::charWidth + 10; }
}

/**
* 認証コード画像を構築して出力します
​​*/
パブリック関数 buildAndExportImage() {
$this->createImage(); $this->setDisturb(); $this->setCaptcha(); $this->exportImage(); }

/**
* 画像を構築し、背景色を設定します
​​*/
プライベート関数 createImage() {
// 画像画像を作成 $this->image = imagecreatetruecolor($this->width, $this->height); //背景色を作成します
$bg = imagecolorallocate($this->image, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255)); //背景色を塗りつぶします
imagefilledrectangle($this->image, 0, 0, $this->width - 1, $this->height - 1, $bg); }

/**
* 干渉要素を設定します
​​*/
プライベート関数 setDisturb() {

//干渉点を設定します
for($i = 0; $i             $color = imagecolorallocate($this->image, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200)); 
            imagesetpixel($this->image, mt_rand(5, $this->width - 10), mt_rand(5, $this->height - 3), $color); 
        }
         
        //設置干扰線
        for($i = 0; $i             $color = imagecolorallocate($this->image, mt_rand(150, 220), mt_rand(150, 220), mt_rand(150, 220)); 
            imagearc($this->image, mt_rand(-10, $this->幅), mt_rand(-10, $this->高さ), mt_rand(30, 300), mt_rand(20, 200), 55 、44、$color); 
        }
         
        //创建边框色
        $border = imagecolorallocate($this->image, mt_rand(0, 50), mt_rand(0, 50), mt_rand(0, 50)); 
        //画边框
        imagerectangle($this->image, 0, 0, $this->width - 1, $this->height - 1, $border); 
    }
     
    /**
* 検証コードを生成して描画します
​​*/
    プライベート関数 setCaptcha() {
        $str = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'; 
        // 验证码文字符を生成
        for($i = 0; $i codeNum; $i++) {
            $this->captcha .= $str{mt_rand(0, strlen($str) - 1)}; 
        }
        //绘制验证码
        for($i = 0; $i captcha); $i++) {
            $color = imagecolorallocate($this->image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200)); 
            $x = フロア(($this->width - 10)/$this->codeNum); 
            $x = $x*$i + Floor(($x-self::charWidth)/2) + 5; 
            $y = mt_rand(2, $this->高さ - 20); 
            imagechar($this->image, 5, $x, $y, $this->captcha{$i}, $color); 
        }
    }
     
    /*
     * 出力画像、セッション中に保存
     */
    プライベート関数exportImage() {
        if(imagetypes() & IMG_GIF){
            header('Content-type:image/gif'); 
            imagegif($this->image); 
        } else if(imagetypes() & IMG_PNG){
            header('コンテンツタイプ:画像/png');   
            imagepng($this->iamge); 
        } else if(imagetypes() & IMG_JPEG) {
            header('コンテンツタイプ:画像/jpeg');   
            imagepng($this->iamge); 
        } その他 {
            imagedestroy($this->image); 
            die("画像タイプをサポートしていません!"); 
        }
        // 验证码情報をセッション中に保存します、md5加密
        if(!isset($_SESSION)){
            セッション開始(); 
        }
        $_SESSION[$this->sessionKey] = md5($this->captcha); 
         
        imagedestroy($this->image);   
    }
     
    関数 __destruct() {
        unset($this->幅, $this->高さ, $this->コード番号,$this->キャプチャ); 
    }
}

/**
* 画像認証コードカテゴリ
* イメージタイプの認証コードを生成します。認証コードには数字と大文字が含まれます。MD5 で暗号化された認証コードがセッションに保存されます。 *
* 使用方法:
* $captcha = 新しい Catpcha();
* $captcha->buildAndExportImage();
*
*作者:羅京
*作成時間: 2013-3-27 11:42:12 AM
​*/
クラス キャプチャ {

private $width;//幅
private $height; //身長
private $codeNum;//認証コードの文字数
private $image; //検証コード画像リソース
private $sessionKey;//セッションに保存された名前
private $captcha;//検証コード文字列
const charWidth = 10 //単一文字の幅、出力文字サイズに応じて変化します
;
/**
* 検証コードクラスを作成し、関連パラメータを初期化します
* @param $width 画像幅
* @param $height 画像の高さ
* @param $codeNum 確認コードの文字数
* @param $sessionKey セッションに保存された名前
​*/
function __construct($width = 50, $height = 20, $codeNum = 4, $sessionKey = 'captcha') {
$this->width = $width;
$this->height = $height;
$this->codeNum = $codeNum;
$this->sessionKey = $sessionKey;

// 最小の高さと幅を保証します
if($height < 20) {
$this->高さ = 20;
}
if($width < ($codeNum * self::charWidth + 10)) {//左右に 5 ピクセルのギャップを確保します
$this->width = $codeNum * self::charWidth + 10;
}
}

/**
* 認証コード画像を構築して出力します
​*/
パブリック関数 buildAndExportImage() {
$this->createImage();
$this->setDisturb();
$this->setCaptcha();
$this->exportImage();
}

/**
*画像を構築し、背景色を設定します
​*/
プライベート関数 createImage() {
//画像を作成します
$this->image = imagecreatetruecolor($this->幅, $this->高さ); //背景色を作成します
$bg = imagecolorallocate($this->image, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255)); //背景色を塗りつぶします
imagefilledrectangle($this->image, 0, 0, $this->width - 1, $this->height - 1, $bg);
}

/**
* 不穏な要素を設定します
​*/
プライベート関数 setDisturb() {

//干渉点を設定します
for($i = 0; $i < 150; $i++) {
$color = imagecolorallocate($this->image, mt_rand(150, 200), mt_rand(150, 200), mt_rand(150, 200));
imagesetpixel($this->image, mt_rand(5, $this->width - 10), mt_rand(5, $this->height - 3), $color);
}

//干渉ラインを設定します
for($i = 0; $i < 10; $i++) {
$color = imagecolorallocate($this->image, mt_rand(150, 220), mt_rand(150, 220), mt_rand(150, 220));
imagearc($this->image, mt_rand(-10, $this->幅), mt_rand(-10, $this->高さ), mt_rand(30, 300), mt_rand(20, 200), 55 、44、$color);
}

//枠線の色を作成する
$border = imagecolorallocate($this->image, mt_rand(0, 50), mt_rand(0, 50), mt_rand(0, 50));
//境界線を描画します
imagerectangle($this->image, 0, 0, $this->width - 1, $this->height - 1, $border);
}

/**
* 検証コードを生成して描画します
​*/
プライベート関数 setCaptcha() {
$str = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
//検証コード文字を生成します
for($i = 0; $i <$this->codeNum; $i++) {
$this->captcha .= $str{mt_rand(0, strlen($str) - 1)};
}
//認証コードを描画します
for($i = 0; $i captcha); $i++) {
$color = imagecolorallocate($this->image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200));
$x = フロア(($this->width - 10)/$this->codeNum);
   $x = $x*$i + Floor(($x-self::charWidth)/2) + 5;
   $y = mt_rand(2, $this->高さ - 20);
   imagechar($this->image, 5, $x, $y, $this->captcha{$i}, $color);
  }
 }
 
 /*
  * 出力画像、セッション中に保存
  */
 プライベート関数exportImage() {
  if(imagetypes() & IMG_GIF){
   header('Content-type:image/gif');
   imagegif($this->image);
  } else if(imagetypes() & IMG_PNG){
   header('コンテンツタイプ:画像/png'); 
          imagepng($this->iamge);
  } else if(imagetypes() & IMG_JPEG) {
   header('コンテンツタイプ:画像/jpeg'); 
          imagepng($this->iamge);
  } その他 {
   imagedestroy($this->image);
   die("画像タイプをサポートしません!");
  }
  // 認証コード情報をセッション中に保存します、md5加密
  if(!isset($_SESSION)){
      session_start();
  }
  $_SESSION[$this->sessionKey] = md5($this->captcha);
  
        imagedestroy($this->image); 
 }
 
 関数 __destruct() {
  unset($this->幅, $this->高さ, $this->コード番号,$this->キャプチャ);
 }
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477617.html技術記事 [php] ?php /** * 图片验证码类 * 图片类型验证码、验证码包含数字と大写字母、セッション中保存md5加密後の验证码 * * 使用方法: * $captcha =...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。