phpパッケージの検証コードツールの完全な例


本論文の例は、phpパッケージの検証コードツールクラスを説明する。皆さんに参考にしてあげます。具体的には以下の通りです。

<?php
//      
class Captcha{
    //  
    private $width;
    private $height;
    private $fontsize;
    private $pixes;
    private $lines;
    private $str_len;
    /*
     *     
     * @param1 array $arr = array(),          
    */
    public function __construct($arr = array()){
      //   
      $this->width = isset($arr['width']) ? $arr['width'] : $GLOBALS['config']['captcha']['width'];
      $this->height = isset($arr['height']) ? $arr['height'] : $GLOBALS['config']['captcha']['height'];
      $this->fontsize = isset($arr['fontsize']) ? $arr['fontsize'] : $GLOBALS['config']['captcha']['fontsize'];
      $this->pixes = isset($arr['pixes']) ? $arr['pixes'] : $GLOBALS['config']['captcha']['pixes'];
      $this->lines = isset($arr['lines']) ? $arr['lines'] : $GLOBALS['config']['captcha']['lines'];
      $this->str_len = isset($arr['str_len']) ? $arr['str_len'] : $GLOBALS['config']['captcha']['str_len'];
    }
    /*
     *        
    */
    public function generate(){
      //    
      $img = imagecreatetruecolor($this->width,$this->height);
      //     
      $bg_color = imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
      imagefill($img,0,0,$bg_color);
      //     
      $this->getLines($img);
      //     
      $this->getPixels($img);
      //       
      $captcha = $this->getCaptcha();
      //    
      $str_color = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
      //    
      //             
      $start_x = ceil($this->width/2) - 25;
      $start_y = ceil($this->height/2) - 8;
      if(imagestring($img,$this->fontsize,$start_x,$start_y,$captcha,$str_color)){
        //  :     
        header('Content-type:image/png');
        imagepng($img);
      }else{
        //  
        return false;
      }
    }
    /*
     *           
     * @return string $captcha,       
    */
    private function getCaptcha(){
      //       
      $str = implode('',array_merge(range('a','z'),range('A','Z'),range(1,9)));
      //   
      $captcha = '';  //       
      for($i = 0,$len = strlen($str);$i < $this->str_len;$i++){
        //         
        $captcha .= $str[mt_rand(0,$len - 1)] . ' ';
      }
      //      session
      $_SESSION['captcha'] = str_replace(' ','',$captcha);
      //   
      return $captcha;
    }
    /*
     *      
     * @param1 resource $img
    */
    private function getPixels($img){
      //     
      for($i = 0;$i < $this->pixes;$i++){
        //    
        $pixel_color = imagecolorallocate($img,mt_rand(100,150),mt_rand(100,150),mt_rand(100,150));
        //  
        imagesetpixel($img,mt_rand(0,$this->width),mt_rand(0,$this->height),$pixel_color);
      }
    }
    /*
     *      
     * @param1 resource $img,           
    */
    private function getLines($img){
      //     
      for($i = 0;$i < $this->lines;$i++){
        //    
        $line_color = imagecolorallocate($img,mt_rand(150,200),mt_rand(150,200),mt_rand(150,200));
        //  
        imageline($img,mt_rand(0,$this->width),mt_rand(0,$this->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$line_color);
      }
    }
    /*
     *      
     * @param1 string $captcha,        
     * @return bool,    true,    false
    */
    public static function checkCaptcha($captcha){
      //         
      return (strtolower($captcha) === strtolower($_SESSION['captcha']));
    }
}

PHPについてもっと興味がある読者は、本駅のテーマを見てもいいです。「PHPパターンと写真の操作方法のまとめ」、「PHP基本文法入門教程」、「PHP演算と演算子の使い方のまとめ」、「php対象プログラム設計入門教程」、「PHPネットワークプログラミング技術のまとめ」、「PHP配列(Aray)操作テクニック大全」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門教程」および「phpよくあるデータベースの操作技巧のまとめ
本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。