class Captcha 
{ 
    protected $value; 
    protected $image_name; 
  
    public function __construct( $image_name ) 
    { 
        $this->image_name = $image_name; 
    } 
  
    public static function createNumber( $length = 4 ) 
    { 
        $num = ""; 
        for ( $i = 0; $i < $length; $i++ ) 
        { 
            $r = mt_rand( 0, 9 ); 
            $num = $num.$r; 
        } 
        return $num; 
    } 
  
    public static function createString( $length = 4 ) 
    { 
        $val = ""; 
        $values = "abcdefghijklmnopqrstuvwyz"; 
        for ( $i = 0; $i < $length; $i++ ) 
        { 
            $r = mt_rand( 0, 24 ); 
            $val = $val.$values[$r]; 
        } 
        return $val;         
    } 
  
    public function setValue( $value ) 
    { 
        $this->value = $value; 
    } 
  
    public function getValue( ) 
    { 
        return $this->value; 
    } 
  
    public function showImage( $channel = null ) 
    { 
        $im = imageCreate( 160, 60 ); 
        $white = imagecolorallocate( $im, 255, 255, 255 ); 
        $black = imagecolorallocate( $im, 0, 0, 0 ); 
  
        $intensity = rand ( 200, 230 ); 
  
        if ( !$channel ) 
        { 
            $channel = rand ( 1, 3 ); 
        } 
        $ratio = rand ( 80, 100 ); 
  
        switch ( $channel ) 
        { 
                case 1: 
                        $colorBgR = $intensity * $ratio / 100; 
                        $colorBgG = $intensity * ( 100 - $ratio ) / 100; 
                        $colorBgB = 0; 
  
                        for ( $i = 0; $i < 5; $i++ ) 
                        { 
                                $shift = rand( 100 - ( $i+1)*3, 100 + ( $i+1)*3 ); 
                                $new = $shift * $colorBgR / 100;     
  
                                $bgColors[] = iMagecolorallocate( $im, $new, $intensity-$new, 0 ); 
                        } 
  
                        for ( $i = 0; $i < 3; $i++ ) 
                        { 
                                $shift = rand( 100 - ( $i+1)*7, 100 + ( $i+1)*7 ); 
                                $new = $shift * $colorBgR / 100;     
  
                                $bgColors[] = iMagecolorallocate( $im, $intensity-$new, $new, 0 ); 
                        } 
                break; 
  
                case 2: 
                        $colorBgG = $intensity * $ratio / 100; 
                        $colorBgB = $intensity * ( 100 - $ratio ) / 100; 
                        $colorBgR = 0; 
  
                        for ( $i = 0; $i < 5; $i++ ) 
                        { 
                                $shift = rand( 100 - ( $i+1)*3, 100 + ($i+1)*3 ); 
                                $new = $shift * $colorBgR / 100;     
  
                                $bgColors[] = iMagecolorallocate( $im, 0, $new, $intensity-$new ); 
                        } 
  
                        for ( $i = 0; $i < 3; $i++ ) 
                        { 
                                $shift = rand( 100 - ( $i+1)*7, 100 + ( $i+1)*7 ); 
                                $new = $shift * $colorBgR / 100;     
  
                                $bgColors[] = iMagecolorallocate( $im, 0 , $intensity-$new, $new ); 
                        } 
  
                case 3: 
                        $colorBgB = $intensity * $ratio / 100; 
                        $colorBgR = $intensity * ( 100 - $ratio ) / 100; 
                        $colorBgG = 0; 
  
                        for ( $i = 0; $i < 5; $i++ ) 
                        { 
                                $shift = rand( 100 - ( $i+1)*3, 100 + ( $i+1)*3 ); 
                                $new = $shift * $colorBgR / 100;     
  
                                $bgColors[] = iMagecolorallocate( $im, $intensity-$new, 0, $new ); 
                        } 
  
                        for ( $i = 0; $i < 3; $i++ ) 
                        { 
                            // to make it harder do symmetric range ^^  
                                $shift = rand( 100 , 100 + ( $i+1)*20 ); 
                                $new = $shift * $colorBgR / 100;     
  
                                $bgColors[] = iMagecolorallocate( $im, $new , 0, $intensity-$new ); 
                        } 
                break; 
        } 
  
  
  
  
        $bgColor = imagecolorallocate( $im, $colorBgR, $colorBgG, $colorBgB ); 
  
  
        for ( $i = 0; $i < strlen( $this->value ); $i++ ) 
        { 
            $rotate = rand(-15, 15); 
  
            $fontSize = rand(28, 36); 
            imagettftext($im, $fontSize ,$rotate , 10+$i*31, 50, $black, "impact.ttf",$this->value[$i] );  
        } 
  
  
  
  
        for ( $i = 0; $i < 160; $i++ ) 
        { 
                for ( $j = 0; $j  < 60; $j++ ) 
                { 
                        $pos = rand( 0, 7 ); 
  
                        if ( imagecolorat( $im, $i, $j ) == $black ) 
                        { 
                                $pos = rand( 6, 7 ); 
  
  
  
                                imagesetpixel( $im, $i, $j, $bgColors[$pos] ); 
                        } 
                        else 
                        { 
                                imagesetpixel( $im, $i, $j, $bgColors[$pos] ); 
                        } 
                } 
        } 
  
        imagejpeg( $im, "images/".$this->image_name.".jpg" ); 
        imagedestroy( $im ); 
        echo" <img src='/images/".$this->image_name.".jpg' style='border: 1px solid #000;' width='160' >"; 
    } 
}

Sorun yaşayanlar başlık altında bildirsin

İyi Forumlar...