天天看點

個人技術作品 - PHP 驗證碼生成類

cls.ValidateNumber.php 

個人技術作品 - PHP 驗證碼生成類

<? php

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

class  ImgCode

個人技術作品 - PHP 驗證碼生成類

{

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $BackGround   =   false ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $BackColor   =   ' #FFFFFF ' ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $OnlyKey   =   false ;

個人技術作品 - PHP 驗證碼生成類

     public   $OnlyKeyWay   =   0 ;

個人技術作品 - PHP 驗證碼生成類

     public   $OnlyKeySeed   =   ' MD5 ' ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $KeyOutPutEncrypt   =   false ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $OutPutWay   =   0 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $SID   =   '' ;

個人技術作品 - PHP 驗證碼生成類

     public   $OutPutText   =   '' ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $arlFont   =   array ( ' 1.ttf ' , ' 2.ttf ' , ' 3.ttf ' , ' 4.ttf ' );

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     private   $Image   =   '' ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $NoisePosition   =   false ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $FontSize   =   0 ;

個人技術作品 - PHP 驗證碼生成類

     public   $BuildLen   =   4 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $ImgWidth   =   100 ;

個人技術作品 - PHP 驗證碼生成類

     public   $ImgHeight   =   30 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $DotNoise   =   false ;

個人技術作品 - PHP 驗證碼生成類

     public   $DotNoiseWay   =   ' auto ' ;

個人技術作品 - PHP 驗證碼生成類

     public   $DotNoiseCol_r   =   array ( 100 , 255 );

個人技術作品 - PHP 驗證碼生成類

     public   $DotNoiseCol_b   =   array ( 100 , 255 );

個人技術作品 - PHP 驗證碼生成類

     public   $DotNoiseCol_g   =   array ( 100 , 255 );

個人技術作品 - PHP 驗證碼生成類

     public   $DotNoisePix   =   300 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $LineNoise   =   false ;

個人技術作品 - PHP 驗證碼生成類

     public   $LineNoiseWay   =   ' auto ' ;

個人技術作品 - PHP 驗證碼生成類

     public   $LineNoiseCol_r   =   array ( 0 , 255 );

個人技術作品 - PHP 驗證碼生成類

     public   $LineNoiseCol_b   =   array ( 0 , 255 );

個人技術作品 - PHP 驗證碼生成類

     public   $LineNoiseCol_g   =   array ( 0 , 255 );

個人技術作品 - PHP 驗證碼生成類

     public   $LineNoisePix   =   300 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $Border   =   false ;

個人技術作品 - PHP 驗證碼生成類

     public   $BorderWay   =   ' auto ' ;

個人技術作品 - PHP 驗證碼生成類

     public   $BorderCol_r   =   array ( 0 , 150 );

個人技術作品 - PHP 驗證碼生成類

     public   $BorderCol_b   =   array ( 0 , 150 );

個人技術作品 - PHP 驗證碼生成類

     public   $BorderCol_g   =   array ( 0 , 150 );

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $RandTextWay   =   ' auto ' ;

個人技術作品 - PHP 驗證碼生成類

     public   $RandTextCol_r   =   array ( 0 , 150 );

個人技術作品 - PHP 驗證碼生成類

     public   $RandTextCol_b   =   array ( 0 , 150 );

個人技術作品 - PHP 驗證碼生成類

     public   $RandTextCol_g   =   array ( 0 , 150 );

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $FontSizeFloat   =   10 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $FontBE   =   15 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $FontBX   =   5 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $FontLean   =   18 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $Toothful   =   2 ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $VerilyTine   =   true ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   $Gather   =   0 ;

個人技術作品 - PHP 驗證碼生成類

     public   $GatherTeam   =   array (

個人技術作品 - PHP 驗證碼生成類

     0 => array ( ' A ' , ' B ' , ' C ' , ' D ' , ' E ' , ' F ' , ' G ' , ' H ' , ' I ' , ' J ' , ' K ' , ' L ' , ' M ' , ' N ' , ' O ' , ' P ' , ' Q ' , ' R ' , ' S ' , ' T ' , ' U ' , ' V ' , ' W ' , ' X ' , ' Y ' , ' Z ' ) ,

個人技術作品 - PHP 驗證碼生成類

     1 => array ( ' a ' , ' b ' , ' c ' , ' d ' , ' e ' , ' f ' , ' g ' , ' h ' , ' i ' , ' j ' , ' j ' , ' l ' , ' m ' , ' n ' , ' o ' , ' p ' , ' q ' , ' r ' , ' s ' , ' t ' , ' u ' , ' v ' , ' w ' , ' x ' , ' y ' , ' z ' ) ,

個人技術作品 - PHP 驗證碼生成類

     2 => array ( ' 0 ' , ' 1 ' , ' 2 ' , ' 3 ' , ' 4 ' , ' 5 ' , ' 6 ' , ' 7 ' , ' 8 ' , ' 9 ' ));

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   function  ImgCode( $img_w   =   100 , $img_h   =   30 , $f_size   =   0 , $bg   =   false , $b_len   =   4 )

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類

         if ( ! $bg )

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             $this -> ImgWidth  =   $img_w ;     //  寬度指派

個人技術作品 - PHP 驗證碼生成類

             $this -> ImgHeight  =   $img_h ;    //  高度指派

個人技術作品 - PHP 驗證碼生成類

        }  else  {

個人技術作品 - PHP 驗證碼生成類

             if ( ! file_exists ( $bg )) die ( ' Find not BackGround File 1 ' );

個人技術作品 - PHP 驗證碼生成類

             $ImgSize   =   GetImageSize ( $bg );

個人技術作品 - PHP 驗證碼生成類

             $this -> ImgWidth  =   $ImgSize [ 0 ];     //  寬度指派

個人技術作品 - PHP 驗證碼生成類

             $this -> ImgHeight  =   $ImgSize [ 1 ];    //  高度指派

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         $this -> BuildLen  =   $b_len ;      //  驗證碼長度指派

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         if ( $f_size   !==   0 )

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             $this -> FontSize  =   $f_size ;

個人技術作品 - PHP 驗證碼生成類

        }  else  {

個人技術作品 - PHP 驗證碼生成類

             $this -> FontSize  =   $img_w   /   $b_len ;

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         session_start ();

個人技術作品 - PHP 驗證碼生成類

        @ session_unregister ( " SESSION_KEY " );  //  若之前已存在一個 SESSION 會話,将其關閉

個人技術作品 - PHP 驗證碼生成類

        @ session_unregister ( " ENCRYPT_KEY " );  //  

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         session_register ( " ENCRYPT_KEY " );

個人技術作品 - PHP 驗證碼生成類

         session_register ( " SESSION_KEY " );     //  注冊 SESSION_KEY

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         $this -> SID  =   session_id ();             //  給予 SESSIONID

個人技術作品 - PHP 驗證碼生成類

         if ( ! session_is_registered ( " SESSION_KEY " ))

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             die ( " session registered lost " );

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     public   function  Build()

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         $m_Cade   =   '' ;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         $this -> FontSize  =   $this -> FontSize  -   $this -> Toothful;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         if ( $this -> BackGround)

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             if ( ! file_exists ( $this -> BackGround)) die ( ' Find not BackGround File 2 ' );

個人技術作品 - PHP 驗證碼生成類

             $ImgSize   =   GetImageSize ( $this -> BackGround);

個人技術作品 - PHP 驗證碼生成類

             $this -> ImgWidth  =   $ImgSize [ 0 ];     //  寬度指派

個人技術作品 - PHP 驗證碼生成類

             $this -> ImgHeight  =   $ImgSize [ 1 ];    //  高度指派

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

             switch ( $ImgSize [ 2 ])

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 case   1 :

個人技術作品 - PHP 驗證碼生成類

                     $this -> Image  =  @imagecreatefromgif( $this -> BackGround);

個人技術作品 - PHP 驗證碼生成類

                       break ;

個人技術作品 - PHP 驗證碼生成類

                 case   2 :

個人技術作品 - PHP 驗證碼生成類

                     $this -> Image  =  @imagecreatefromjpeg( $this -> BackGround);

個人技術作品 - PHP 驗證碼生成類

                       break ;

個人技術作品 - PHP 驗證碼生成類

                 case   3 :

個人技術作品 - PHP 驗證碼生成類

                     $this -> Image  =  @imagecreatefrompng( $this -> BackGround);

個人技術作品 - PHP 驗證碼生成類

                       break ;

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類

        }  else  {

個人技術作品 - PHP 驗證碼生成類

             if ( ! $VerilyTine )

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 $this -> Image  =  @imagecreate( $this -> ImgWidth , $this -> ImgHeight);

個人技術作品 - PHP 驗證碼生成類

            }  else  {

個人技術作品 - PHP 驗證碼生成類

                 $this -> Image  =  @imagecreatetruecolor( $this -> ImgWidth , $this -> ImgHeight);

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         if ( ! $this -> Image) die ( " Cannot Initialize new GD image stream " );   //  是否建立成功

個人技術作品 - PHP 驗證碼生成類

         if ( ! $this -> BackGround)

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             $FunBackColor   =   $this -> FetchColor( $this -> BackColor);

個人技術作品 - PHP 驗證碼生成類

            imageFilledRectangle( $this -> Image , 0 , 0 , $this -> ImgWidth , $this -> ImgHeight , $FunBackColor );  //  建立一個矩型并填充

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         //  如果字型超出高度則重設字型大小等于高度 - 2 , 防止超出圖形區

個人技術作品 - PHP 驗證碼生成類

         if ( $this -> FontSize  >   $this -> ImgHeight)  $this -> FontSize  =   $this -> ImgHeight;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         //  設定字型生成的左邊界

個人技術作品 - PHP 驗證碼生成類

         $FunLeft   =  ( $this -> ImgWidth  -   $this -> BuildLen  *  ( $this -> FontSize  +   $this -> FontSize  /   10 ))  /   $this -> FontSize;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         //  幹擾資訊出現在底部的判斷

個人技術作品 - PHP 驗證碼生成類

         if ( $this -> NoisePosition  ==   false ) $this -> setNoise();

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         for ( $i   =   0 ; $i   <   $this -> BuildLen; $i ++ )

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             if ( ! $this -> OnlyKey)

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 $UseKey   =   array_reverse ( $this -> GatherTeam[ $this -> Gather]);    //  如果為内定内容資料集,确定使用内容資料集,并反轉數組

個人技術作品 - PHP 驗證碼生成類

                 $RandText   =   $UseKey [ mt_rand ( 0 , count ( $UseKey )  -   1 )];   //  擾亂計算本循環的字元

個人技術作品 - PHP 驗證碼生成類

                 $m_Cade   .=   $RandText ;   //  儲存驗證碼資訊

個人技術作品 - PHP 驗證碼生成類

            }  else  {

個人技術作品 - PHP 驗證碼生成類

                 //  是否區分大小寫生成唯一驗證碼序列

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

                 if ( $this -> OnlyKeyWay  ==   0 )

個人技術作品 - PHP 驗證碼生成類

                {

個人技術作品 - PHP 驗證碼生成類

                     if ( $this -> OnlyKeySeed  ==   ' MD5 ' )   //  加密方式判斷

個人技術作品 - PHP 驗證碼生成類

                    {

個人技術作品 - PHP 驗證碼生成類

                         $Rand   =   str_split ( strtolower ( md5 ( microtime ())));

個人技術作品 - PHP 驗證碼生成類

                    }  else  {

個人技術作品 - PHP 驗證碼生成類

                         $Rand   =   str_split ( strtolower ( sha1 ( microtime ())));

個人技術作品 - PHP 驗證碼生成類

                    }

個人技術作品 - PHP 驗證碼生成類

                }  else  {

個人技術作品 - PHP 驗證碼生成類

                     if ( $this -> OnlyKeySeed  ==   ' MD5 ' )   //  加密方式判斷

個人技術作品 - PHP 驗證碼生成類

                    {

個人技術作品 - PHP 驗證碼生成類

                         $Rand   =   str_split ( strtoupper ( md5 ( microtime ())));

個人技術作品 - PHP 驗證碼生成類

                    }  else  {

個人技術作品 - PHP 驗證碼生成類

                         $Rand   =   str_split ( strtoupper ( sha1 ( microtime ())));

個人技術作品 - PHP 驗證碼生成類

                    }

個人技術作品 - PHP 驗證碼生成類

                }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

                 $Rand   =   array_reverse ( $Rand );

個人技術作品 - PHP 驗證碼生成類

                 $RandText   =   $Rand [ mt_rand ( 0 , count ( $Rand )  -   1 )];

個人技術作品 - PHP 驗證碼生成類

                 $m_Cade   .=   $RandText ;   //  儲存驗證碼資訊

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

             //  設定字型顔色

個人技術作品 - PHP 驗證碼生成類

             if ( $this -> RandTextWay  ==   ' auto ' )

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 $FunFontColor   =  imageColorAllocate( $this -> Image ,   mt_rand ( $this -> RandTextCol_r[ 0 ] ,   $this -> RandTextCol_r[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                   mt_rand ( $this -> RandTextCol_b[ 0 ] ,   $this -> RandTextCol_b[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                   mt_rand ( $this -> RandTextCol_g[ 0 ] ,   $this -> RandTextCol_g[ 1 ]));

個人技術作品 - PHP 驗證碼生成類

            }  else  {

個人技術作品 - PHP 驗證碼生成類

                 $FunFontColor   =   $this -> FetchColor( $this -> RandTextWay);

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

             //  設定随機字型資訊

個人技術作品 - PHP 驗證碼生成類

             $FontType   =   $this -> arlFont[ mt_rand ( 0 , count ( $this -> arlFont)  -   1 )];

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

             //  設定循環每個字元時的不同大小

個人技術作品 - PHP 驗證碼生成類

             $RandSize   =   mt_rand ( $this -> FontSize  -   $this -> FontSize  /   $this -> FontSizeFloat ,    //  下限

個人技術作品 - PHP 驗證碼生成類

                                 $this -> FontSize  +   $this -> FontSize  /   $this -> FontSizeFloat);  //  上限

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

            // 設定字型基本點 x (左右控制)

個人技術作品 - PHP 驗證碼生成類

             $Location_x   =   $FunLeft   +  ( $i   *   $this -> FontSize  +   $this -> FontSize  /   $this -> FontBE)  +   $this -> FontBX;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

             //  設定字型基本點 y (上下控制)

個人技術作品 - PHP 驗證碼生成類

             $Location_y   =   mt_rand ( $this -> FontSize  -   $this -> FontSize  /   $this -> FontBE ,  

個人技術作品 - PHP 驗證碼生成類

                                   $this -> FontSize  +   $this -> FontSize  /   $this -> FontBE);

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

            imagettftext( $this -> Image ,   $RandSize ,   mt_rand ( - $this -> FontLean , $this -> FontLean) ,   $Location_x ,   $Location_y ,  

個人技術作品 - PHP 驗證碼生成類

                          $FunFontColor ,   $FontType ,   iconv ( ' gb2312 ' , ' UTF-8 ' , $RandText ));

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

        imageantialias( $this -> Image , true );

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         $_SESSION [ " SESSION_ID " ]  =   $this -> SID;

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         if ( $this -> OutPutWay  ==   0 )

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             $_SESSION [ " SESSION_KEY " ]  =   $m_Cade ;

個人技術作品 - PHP 驗證碼生成類

             $this -> OutPutText  =   $m_Cade ;

個人技術作品 - PHP 驗證碼生成類

        }  else   if ( $this -> OutPutWay  ==   1 ) {

個人技術作品 - PHP 驗證碼生成類

             $EnText   =   sha1 ( strrev ( md5 ( $m_Cade )));

個人技術作品 - PHP 驗證碼生成類

             $_SESSION [ " ENCRYPT_KEY " ]  =   $EnText ;

個人技術作品 - PHP 驗證碼生成類

             $this -> OutPutText  =   sha1 ( strrev ( md5 ( $m_Cade )));

個人技術作品 - PHP 驗證碼生成類

        }  else  {

個人技術作品 - PHP 驗證碼生成類

             $EnText   =   sha1 ( strrev ( md5 ( $m_Cade )));

個人技術作品 - PHP 驗證碼生成類

             $_SESSION [ " ENCRYPT_KEY " ]  =   $EnText ;

個人技術作品 - PHP 驗證碼生成類

             $_SESSION [ " SESSION_KEY " ]  =   $m_Cade ;

個人技術作品 - PHP 驗證碼生成類

             $this -> OutPutText  =   array ( 0 => $m_Cade , 1 => $EnText );

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         //  幹擾資訊出現在第一層的判斷

個人技術作品 - PHP 驗證碼生成類

         if ( $this -> NoisePosition  ==   true ) $this -> setNoise();

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

         header ( " Content-type: image/png " );

個人技術作品 - PHP 驗證碼生成類

        imagePng( $this -> Image);

個人技術作品 - PHP 驗證碼生成類

        imagedestroy( $this -> Image);

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     private   function  setNoise()

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類

         //  安排邊框

個人技術作品 - PHP 驗證碼生成類

         $this -> setBorser();

個人技術作品 - PHP 驗證碼生成類

         //  安排點性幹擾

個人技術作品 - PHP 驗證碼生成類

         $this -> setDotNoise();

個人技術作品 - PHP 驗證碼生成類

         //  安排線性幹擾

個人技術作品 - PHP 驗證碼生成類

         $this -> setLineNoise();

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     private   function  setBorser()

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類

         if ( $this -> Border)

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             if ( $this -> BorderWay  ==   ' auto ' )

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 $BorderColor   =  imageColorAllocate( $this -> Image ,   mt_rand ( $this -> BorderCol_r[ 0 ] ,   $this -> BorderCol_r[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                 mt_rand ( $this -> BorderCol_b[ 0 ] ,   $this -> BorderCol_b[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                 mt_rand ( $this -> BorderCol_g[ 0 ] ,   $this -> BorderCol_g[ 1 ]));

個人技術作品 - PHP 驗證碼生成類

                imageRectangle( $this -> Image ,   0 ,   0 ,   $this -> ImgWidth  -   1 ,   $this -> ImgHeight  -   1 ,   $BorderColor );

個人技術作品 - PHP 驗證碼生成類

            }  else  {

個人技術作品 - PHP 驗證碼生成類

                 $BorderColor   =   $this -> FetchColor( $this -> BorderWay);

個人技術作品 - PHP 驗證碼生成類

                imageRectangle( $this -> Image ,   0 ,   0 ,   $this -> ImgWidth  -   1 ,   $this -> ImgHeight  -   1 ,   $BorderColor );

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類

             return   true ;

個人技術作品 - PHP 驗證碼生成類

        }  else  {

個人技術作品 - PHP 驗證碼生成類

             return   false ;

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     private   function  setDotNoise()

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類

         if ( $this -> DotNoise)

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             if ( $this -> DotNoiseWay  ==   ' auto ' )

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 for ( $i   =   0 ;  $i   <   $this -> DotNoisePix;  $i ++ ){

個人技術作品 - PHP 驗證碼生成類

                     $randColor   =  imageColorAllocate( $this -> Image ,   mt_rand ( $this -> DotNoiseCol_r[ 0 ] ,   $this -> DotNoiseCol_r[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                   mt_rand ( $this -> DotNoiseCol_b[ 0 ] ,   $this -> DotNoiseCol_b[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                   mt_rand ( $this -> DotNoiseCol_g[ 0 ] ,   $this -> DotNoiseCol_g[ 1 ]));  

個人技術作品 - PHP 驗證碼生成類

                    imageSetPixel( $this -> Image ,   mt_rand ( 0 ,   $this -> ImgWidth) ,   mt_rand ( 0 ,   $this -> ImgHeight) ,   $randColor );

個人技術作品 - PHP 驗證碼生成類

                }

個人技術作品 - PHP 驗證碼生成類

            }  else  {

個人技術作品 - PHP 驗證碼生成類

                 $DotColor   =   $this -> FetchColor( $this -> DotNoiseWay);

個人技術作品 - PHP 驗證碼生成類

                 for ( $i   =   0 ;  $i   <   $this -> DotNoisePix;  $i ++ ){

個人技術作品 - PHP 驗證碼生成類

                    imageSetPixel( $this -> Image ,   mt_rand ( 0 ,   $this -> ImgWidth) ,   mt_rand ( 0 ,   $this -> ImgHeight) ,   $DotColor );

個人技術作品 - PHP 驗證碼生成類

                }

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類

             return   true ;

個人技術作品 - PHP 驗證碼生成類

        }  else  {

個人技術作品 - PHP 驗證碼生成類

             return   false ;

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     private   function  setLineNoise()

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類

         if ( $this -> LineNoise)

個人技術作品 - PHP 驗證碼生成類

        {

個人技術作品 - PHP 驗證碼生成類

             if ( $this -> LineNoiseWay  ==   ' auto ' )

個人技術作品 - PHP 驗證碼生成類

            {

個人技術作品 - PHP 驗證碼生成類

                 for ( $i = 0 ; $i   <   $this -> LineNoisePix; $i ++ )

個人技術作品 - PHP 驗證碼生成類

                {

個人技術作品 - PHP 驗證碼生成類

                     $LineColor   =  imageColorAllocate( $this -> Image ,   mt_rand ( $this -> LineNoiseCol_r[ 0 ] ,   $this -> LineNoiseCol_r[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                     mt_rand ( $this -> LineNoiseCol_b[ 0 ] ,   $this -> LineNoiseCol_b[ 1 ]) ,  

個人技術作品 - PHP 驗證碼生成類

                                                                     mt_rand ( $this -> LineNoiseCol_g[ 0 ] ,   $this -> LineNoiseCol_g[ 1 ]));

個人技術作品 - PHP 驗證碼生成類

                    imageline( $this -> Image , mt_rand ( 0 , $this -> ImgWidth) , mt_rand ( 0 , $this -> ImgHeight) ,

個人技術作品 - PHP 驗證碼生成類

                                               mt_rand ( 0 , $this -> ImgWidth) , mt_rand ( 0 , $this -> ImgHeight) , $LineColor );

個人技術作品 - PHP 驗證碼生成類

                }

個人技術作品 - PHP 驗證碼生成類

            }  else  {

個人技術作品 - PHP 驗證碼生成類

                 $LineColor   =   $this -> FetchColor( $this -> LineNoiseWay);

個人技術作品 - PHP 驗證碼生成類

                 for ( $i = 0 ; $i   <   $this -> LineNoisePix; $i ++ )

個人技術作品 - PHP 驗證碼生成類

                {

個人技術作品 - PHP 驗證碼生成類

                    imageline( $this -> Image , mt_rand ( 0 , $this -> ImgWidth) , mt_rand ( 0 , $this -> ImgHeight) ,

個人技術作品 - PHP 驗證碼生成類

                                               mt_rand ( 0 , $this -> ImgWidth) , mt_rand ( 0 , $this -> ImgHeight) , $LineColor );

個人技術作品 - PHP 驗證碼生成類

                }

個人技術作品 - PHP 驗證碼生成類

            }

個人技術作品 - PHP 驗證碼生成類

        }

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類
個人技術作品 - PHP 驗證碼生成類

     private   function  FetchColor( $Color   =   '' )

個人技術作品 - PHP 驗證碼生成類

    {

個人技術作品 - PHP 驗證碼生成類

         $Color   =   ereg_replace ( " ^# " , "" , $Color );

個人技術作品 - PHP 驗證碼生成類

         $r   =   $Color [ 0 ] . $Color [ 1 ];

個人技術作品 - PHP 驗證碼生成類

         $r   =   hexdec ( $r );

個人技術作品 - PHP 驗證碼生成類

         $b   =   $Color [ 2 ] . $Color [ 3 ];

個人技術作品 - PHP 驗證碼生成類

         $b   =   hexdec ( $b );

個人技術作品 - PHP 驗證碼生成類

         $g   =   $Color [ 4 ] . $Color [ 5 ];

個人技術作品 - PHP 驗證碼生成類

         $g   =   hexdec ( $g );

個人技術作品 - PHP 驗證碼生成類

         $Color   =  imagecolorallocate ( $this -> Image ,   $r ,   $b ,   $g );

個人技術作品 - PHP 驗證碼生成類

         return   $Color ;

個人技術作品 - PHP 驗證碼生成類

    }

個人技術作品 - PHP 驗證碼生成類

}

個人技術作品 - PHP 驗證碼生成類

?>

必須設定好,所需要的字型檔案及其他資源。