Sitende PHP Güvenlik Kodu (CAPTCHA) kullan

Yazar: sanalzade Tarih: 4 Aralık 2011

Web projeleri için botlar en can sıkıcı noktalardan birisidir ve onlardan korunmak için bazı yöntemlere ihtiyaç duyarız. Güvenlik kodu bir başka adıyla CAPTCHA  uygulamaları ise bu noktada en çok tercih edilen yöntemdir.Securimage.

Securimage, gerek entegrasyonu, gerekse üzerinde yapabileceğiniz değişiklikler açısından çok başarılı bir PHP betiği. PHP’nin GD kütüphanesi ile çalışıyor ve yazı tipi, kelime listesi gibi bir çok ayarı istediğiniz şekilde yapabiliyorsunuz. Şimdi ise betiği projelerinize şu şekilde entegre edebilirsiniz.

Öncelikle phpcaptcha adresten betiği indirip zip arşivinden çıkardıktan securimage klasörünü projeniz içine kopyalıyorsunuz. Securimage klasörünün /securimage/ olduğunu varsayıyorum. Daha sonra formunuzda güvenlik kodunu göstermek için aşağıdaki kodu formunuza yerleştiriyorsunuz:

[php]<img id="captcha" src="securimage/securimage_show.php" alt="Güvenlik Kodu" />[/php]

Daha sonra formda güvenlik kodunu girmek üzere bir yazı alanı oluşturmak için aşağıdaki kodu kullanıyoruz:

[php]<input type="text" name="guvenlik_kodu" />[/php]

Eğer kullanıcıların güvenlik kodunu görmeme ihtimalini göz önünde bulundurup, formumuza bir de güvenlik kodunu yenileme linki koymak istiyorsak aşağıdaki kodu kullanıyoruz:

[php]<a href="#" onclick="document.getElementById(‘captcha’).src = ‘securimage/securimage_show.php?’ + Math.random(); return false">Resmi Tazele</a>[/php]

Görme yetisini kaybetmiş veya güvenlik kodunu tam seçemeyen kullanıcılarınızın formu kullanma ihtimalini göz önünde bulundurup bir de kodu dinleme seçeneği sunabilirsiniz. Bunu formunuza eklemek için aşağıdaki kodu eklemeniz yeterli olacaktır:

[php]<a href="securimage/securimage_play.php">Güvenlik Kodunu Dinle</a>[/php]

Artık formumuza güvenlik kodunu eklemiş bulunuyoruz. Bundan sonraki kısım ise form gönderildikten sonra güvenlik kodunun doğru olup olmadığının kontrol edilmesi. Bu kısım da betiğin bize sağladığı bir fonksiyon sayesinde gayet basit bir şekilde uygulanabiliyor.

Formun gönderildiğinde verinin yollandığı PHP dosyamızı açıyoruz ve en tepeye aşağıdaki fonksiyonumuzu ekliyoruz.

[php]<?php session_start(); ?>[/php]

Daha sonra securimage sınıfını çağırmak için aşağıdaki kodu formun işlendiği kodun öncesine ekliyoruz:

[php]include_once("securimage/securimage.php");
$securimage = new Securimage();[/php]

Artık güvenlik kodu sınıfımızı çağırdığımıza göre, sınıfımızda bulunan check fonksiyonu ile gönderilen güvenlik kodunun doğru olup olmadığını kontrol edebilir ve eğer güvenlik kodu yanlış ise kullanıcıya bir uyarı verdirebiliriz. Bu işlemi gerçekleştirmek içinse aşağıdaki yöntemi kullanıyoruz:

[php]// Gönderilen güvenlik kodu yanlışsa yapılacak olan işlem
if ($securimage->check($_POST['guvenlik_kodu']) == false) {
die(‘Girdiğiniz güvenlik kodu yanlıştır! Lütfen geri dönüp tekrar deneyiniz.’);
}[/php]

Betiğin kullanımını anlattıktan sonra, PHP sınıfının içinde bulunan değişkenlerin görevlerinden de biraz bahsetmek istiyorum.
Bu değişkenlerin değerlerini, betiğimizin PHP sınıfı dosyası olan securimage.php dosyasını açıp düzenleyebilirsiniz.

$image_width: Ekrana bastırılacak olan güvenlik kodunun piksel boyutunda genişliği
$image_height: Ekrana bastırılacak olan güvenlik kodunun piksel boyutunda yüksekliği
$image_type: Ekrana bastırılacak olan güvenlik kodunun resim formatı (SI_IMAGE_PNG, SI_IMAGE_JPG, SI_IMAGE_GIF olmak üzere sadece 3 değer alabilir)
$code_length: Güvenlik kodumuzun uzunluğu(karakter sayısı)
$charset: Güvenlik kodunda kullanılacak olan karakterler(yazı tipi buraya girdiğiniz karakterleri desteklemelidir, aksi takdirde sorunlar çıkabilir)
$wordlist_file: Kelime listesi dosyası. Eğer güvenlik kodunun sizin belirlediğiniz kelimelerden oluşmasını istiyorsanız bu bölüme oluşturduğunuz kelime listenizin yolunu girmeniz gerekmektedir.
$use_wordlist: Güvenlik kodunda kelime listesinin kullanılıp kullanılmayacağı. true ve false olmak üzere 2 değer alabilir.

Betiğin çalışması için sunucunuzda bulunması gereken özellikler şunlardır:
4.3.0 veya üstü PHP versiyonu
GD kütüphanesi desteği.
Session desteği.

Daha fazla bilgi için buraya tıklayarak betiğin sayfasına gidebilir veya şuraya tıklayarak betiğin hızlı başlangıç kılavuzunu okuyabilirsiniz.

Bu konuda problem yaşayan arkadaşlar yorum alanından belirtebilir. Yardımcı olacağımızdan emin olabilirsiniz.

Etiketler
Yorumlar

6 Yorum Yapılmış!

ugur

Ara 04, 2011

Çok işe yarar bilgiler var. Ben de güvenlik kodu arıyordum bunu bulmuştum ama nasıl uygulayacağımı bilemiyordum. Çok teşekkür ederim. Yararlı bir uygulama gerçekten…

Cevapla

can atasever

Ara 05, 2011

Gerçekten güzel anlatım olmuş.. Akismet de bloglar için çok başarılı bir SPAM filtresi, tavsiye ederim.

Cevapla

    sanalzade

    Ara 05, 2011

    Haklısınız evet.. cms tarzı sistemlerde aksimet başarılı ama onun haricinde php siteler için captcha ideal uygulamaların başında geliyor.

    Cevapla

Özkan Poyrazoglu

Ara 06, 2011

evet işe yarayacak bir özellik :)

Cevapla

Çağın Berk

Nis 08, 2012

Yhaa projenize yapıştırın ne yaa ? :S

Cevapla

gökhan merd

Nis 10, 2013

konu çok eski ama sayenizde işimi hallettim.Güvenlik kodu yanlış olduğu zaman alert’ı bir sonraki parentta veriyor ben bunu popup şeklinde form sayfasında nasıl verebilirim…

Cevapla

Yorum yapmak ister misin?


Benzer Yazılar