Güvenlik Kodu(captcha) Uygulaması

Bu konuyu okuyanlar

OfisSoft

Asistan
Katılım
14 Ekim 2008
Mesajlar
135
Reaksiyon puanı
4
Puanları
0
Merhaba Arkadaşlar.

Basit bir güvenlik kodu uygulaması yaptım. Olayın mantığının anlaşılması için kodların açıklamalarınıda yazdım.

Aşağıdaki dosyayı image.php olarak kaydedin.

PHP:
<?php
    /*
    Author    : İbrahim HIZLIOĞLU
    Web        : http://www.ofissoft.com | http://www.webteders.com
    E-Mail    : [email protected]
    Update    : 25.11.2009
    Licence    : Open Source
    */

    # Guvenlik kodunu kullanabilmek icin session aciyoruz.
        session_start();
    # Resim Olusturuyoruz.
        $resim  = ImageCreate(100,30);
    # Renkleri Belirliyoruz.
        $beyaz  = ImageColorAllocate($resim, 255, 255, 255);
        $siyah    = ImageColorAllocate($resim, 0, 0, 0);
        $rand   = ImageColorAllocate($resim, rand(0,255), rand(0,255), rand(0,255));
    # Arkaplan rengini belirliyoruz.
        ImageFill($resim, 0, 0, $rand);
    # Resimin okumasını zorlastirmak icin rastgele renklerle cizgiler atiyoruz.
        for($i=0;$i<=100; $i++)
        {
            $rand   = ImageColorAllocate($resim, rand(0,255), rand(0,255), rand(0,255));
            ImageLine($resim, $i+$i, 0, $i+$i, 30, $rand);
        }
    # Resimin kenarlarina siyah bir cerceve koyuyoruz.
        ImageLine($resim, 100, 0, 0, 0, $siyah);     # Ust Border
        ImageLine($resim, 100, 29, 0, 29, $siyah);     # Alt Border
        ImageLine($resim, 0, 30, 0, 0, $siyah);     # Sag Border
        ImageLine($resim, 99, 30, 99, 0, $siyah);     # Sol Border
    # Guvenlik kodunu olusturuyoruz, Session'a atiyoruz ve resime yazdiriyoruz.
        $harfler                        = 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');
        $harf                            = array_rand($harfler,5);
        $_SESSION['guvenlik']['deger']    = rand(1,9) . $harfler[$harf[0]] . rand(1,9) . $harfler[$harf[1]] . $harfler[$harf[2]] . rand(1,9) . $harfler[$harf[3]] . $harfler[$harf[4]];
        ImageString($resim, 5, 14, 8, $_SESSION['guvenlik']['deger'], $beyaz);
    # Resmi ekrana yaziyoruz.
        header("Content,type: image/png");
        ImagePng($resim);
    # Resmi hafizadan siliyoruz.
        ImageDestroy($resim);
?>
Aşağıdaki dosyayı image2.php olarak kaydedin.

PHP:
<?php
# Session oturumunu baslatiyoruz.
    session_start();
# Eger sayfaya post yapilmissa guvenlik kodunu kontrol edelim.
    if($_POST)
    {
        # POST ile kullanicinin girdigi guvenlik kodunu alalim.
        $gonderilen    = $_POST['guvenlik'];
        
        # Eger bossa uyari verelim. Bos degilse kontrol edelim.
        if(empty($gonderilen))
        {
            echo 'Guvenlik kodunu bos birakamazsiniz!';
        }
        else
        {
            if($_SESSION['guvenlik']['deger']==$gonderilen)
            {
                # Guvenlik kodu dogru girildi. Burada mail gonderimi, kayit vb. islemlerinizi yapabilirsiniz.
                echo 'Guvenlik kodu dogru. Tesekkurler.';
            }
            else
            {
                echo 'Hatali Guvenlik Kodu';
            }
        }
    }

?>
<form action="" method="post">
<img src="image.php" /><br><input type="text" name="guvenlik" id="guvenlik" /><br><input type="submit" value="Gonder" />
</form>
ve image2.php dosyasını çalıştırın. Eğer bir hata ile karşılaşıyorsanız php.ini dosyasını açın ve gd2'nin başındaki noktalı virgülü kaldırarak kaydedin. Servisleri yeniden başlatın ve image2.php'yi yeniden çalıştırın.
 
Üst