logo
Hoşgeldiniz! Forumun bütün özelliklerini kullanmak için lütfen Giriş ya da Kayıt.

Bildirim

Icon
Error

PHP ile Captcha oluşturma
@butun Offline
#1 Gönderildi : 04 Temmuz 2010 Pazar 13:16:10(UTC)
@butun



Sıralama: Yönetici

Madalyalar:
Anahtar Kişi: Forumda anahtar rol oynayan kullanıcılara verilirAltın Madalya: Forumda üstün hizmetleri olan kullanıcılara verilirKod Erişimi: Forum kodlarına doğrudan erişimi bulunan kullanıcılara verilirVeritabanı Erişimi: Forum veri tabanına doğrudan erişimi olan kullanıcılara verilirSistemin Efendisi: Sisteminin tamamına hükmeden kullanıcılara verilir

Mesajlar: 1,838
Puanlar: 12,640
Konum: Istanbul

Thanks: 12 times
17 Mesajına Toplam 25 Kere Teşekkür Edildi.

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

Bu konudaki kullanıcılar
Ziyaretçi
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.