Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

Php İle Güvenlik Kodu Oluşturma

42 sec read

Güvenliğin ön plana çıktığı günümüz artık sitelere üye olurken normal formlara ek olarak bir de resim görüyoruz. Bu resmin üzerindeki yazıyı formdaki kutucuğa girmeden üye olamıyor veya daha geniş bir tanımla formu gönderemiyoruz. Bu üzerinde kod yazılı resim sayesinde, otomatik üye olan betiklerin önünü kesmiş ve sitemizi korumuş oluyoruz. Kendi sitelerinizde resim üzerine rastgele yazı veya sayı yazdırmak için şöyle bir kod kullanabilirsiniz.

[php]< ?php
//olusturulmus resmi tarayiciya gonderir
create_image();
exit();

function create_image()
{
//md5 ile rastgele sayi uretelim
$md5 = md5(rand(0,999));
//32 karakter yerine sadece 5 karakterini aliyoruz
$pass = substr($md5, 10, 5);

//resmin boyutlarini ayarliyoruz
$width = 100;
$height = 20;

//resim kaynagini olusturuyoruz
$image = ImageCreate($width, $height);

//Beyaz siyah ve gri renklerini olusturuyoruz
$white = ImageColorAllocate($image, 255, 255, 255);
$black = ImageColorAllocate($image, 0, 0, 0);
$grey = ImageColorAllocate($image, 204, 204, 204);

//Zemini siyah yapiyoruz
ImageFill($image, 0, 0, $black);

//Rastgele sayiyi resmin uzerine yaziyoruz
ImageString($image, 3, 30, 3, $pass, $white);

//resme birkac cizgi koyuyoruz
ImageRectangle($image,0,0,$width-1,$height-1,$grey);
imageline($image, 0, $height/2, $width, $height/2, $grey);
imageline($image, $width/2, 0, $width/2, $height, $grey);

//sunucuya resmin turunu belirtiyoruz
header("Content-Type: image/jpeg");

//Yeni jpeg formatindaki resmin ciktisini aliyoruz
ImageJpeg($image);

//Kaynagi temizliyoruz
ImageDestroy($image);
}
?>[/php]

Erhan Yakut Software Developer @Binalyze | Founder @Passwall | Golang Enthusiast | Open Sorcerer

23 Replies to “Php İle Güvenlik Kodu Oluşturma”

  1. iyi çalışmalar
    yazınızı inceledim. gerçekten de türkçe bir kaynak olması açısından oldukça yararlı. ama benim bir sorunum çıktı.
    ğ,ş,ı gibi türkçe karakterleri kabul etmiyor. benim projemi iptal mi etmem gerek.
    bir çaresi yokmu acaba??

  2. Bunun sebebi büyük ihtimalle kullandığınız fontu seçmemenizden kaynaklanıyor. Fakat şunu da belirtmeliyim ki güvenlik kodlarında Türkçe karakter kullanılması size sorun yaratabilir. Sıfır(0) ve O harfi bile sorun yarattığı için insanlar genellikle bunları kullanmaktan kaçınırken bir de Türkçe karakter kullanmak, kullanıcıların güvenlik kodunu hiç bir zaman doğru girememesine sebep olabilir. Bu nedenle Türkçe karakter kullanmamanızı tavsiye ederim.

  3. birden çok fotografı seçip tek seferde aynı yazıyı üzerlerine nasıl yazdırabilirim

  4. Kod benim serverımda çalışmıyor, ImageCreate diye bir fonksiyon yok diyor php de.

    Serverım tamamen linux apache tabanlı. Nasıl çözeriz?

  5. sunucunda php için GD Library’nin aktif hale getirilmiş olması lazım. Eğer değilse bu dediğin hata ile karşılaşabilirsin.

  6. Merhaba,
    Teşekkür ederim yazınız için.Ben güvenlik kodunun nasıl yapıldığını ilk bu sayfada gördüm.Daha önce yine rastgele sayı üreterek üretilen rakamların karşılığı olan resimleri sayfaya eklemeyi düşünüyordum.Peki sizce böyle birşey güvenli olur mu? Kısacası işe yarar mı?

  7. eğer yazı normal olarak görünecekse botlar tarafından yine okunabiliyor.. o yüzden güvenli olur mu orası tartışılır.. zaten kodun genel mantığı da botların siteye üye olmasını/yorum yapmasını engellemek.. hiç olmasa da olur aslında yani.. ama basit bir blog sitesindeki iletişim formundan bile günde 50 tane hede gönderiyorsa botlar, düşünmek gerek..

  8. peki resimdeki kodla formdan alınan kodu nasıl karşılaştırıcaz? örneğin kontol.php de

    if($guvenlik_kodu(Kullanıcın girdiği)==(RESİM)

    {

    }

    ?

  9. resmi oluşturdukta bunun doğrulaması nasıl yapılacak? demek istediğim resimde ne yazdığını nasıl alacağız?

  10. peki resme arka plan değilde dosyadan resim eklemek için hangi kodu kullanmalıyım..teşekkürler şimdiden.

  11. Hocam elinize sağlık.
    Yazılarınızı arasıra takip etmekteyim ve bizleri hep kurtarıyorsunuz bu makaleler ile ve örnekleriniz ile :)

  12. 1-) Güvenlik kodunda yer alan bilgi $pass değişkeninde tutuluyor.
    2-) session_start(); komutu ile SESSION başlatınız
    3-) Resmin Oluşturulduğu sayfada, $pass değerini $_SESSION içinde bir değişkene aktarınız. $_SESSION[‘guvenlikKodu’] = $pass
    4-) karşılaştırma sayfasında bu $_SESSION daki veri ile kullanıcının girdiğini karşılaştırınız.
    if($_SESSION[‘guvenlikKodu’] == $_POST[‘girilen’]){
    // şeklinde doğrulama sayfasında kontrol edebilirsiniz.
    }

  13. Kodun gerçekten çalıştığına inanıyormusunuz…?

    php 5.2 kurulu olan bilgisayarımda kodu resim.php adı altında kayıt ettikten sonra (? önceki boşluk alındı)
    başka bir php dosyaya sadece

    satırı ekledim ve php dosyayı kayıt ettikten sonra ie7 web sayfasını çağırdığımda resim oluşmadığından gelemedi(acaba neden ?).

  14. peki hocam güvenlik kodunu nasıl çözeriz ?
    otomatik giriş yaptırmak istersem bir programda?

  15. Merhaba,
    Bende GD ile ilgili aşağıdakilerin yazmasına karşın çalışmamaktadır.
    gd
    GD Support enabled
    GD Version bundled (2.0.34 compatible)
    FreeType Support enabled
    FreeType Linkage with freetype
    FreeType Version 2.3.9
    GIF Read Support enabled
    GIF Create Support enabled
    JPEG Support enabled
    libJPEG Version 6b
    PNG Support enabled
    libPNG Version 1.2.44
    WBMP Support enabled
    XBM Support enabled

  16. merhaba çok yeniyim php'de sorum biraz abes kaçarsa kusura bakmayın.

    kodu denedim.. tek başına bir php sayfası olarak oluşturduğumda gayet güzel çalışıyor. fakat kodları index'in içine gömdüğümde çalışmıyor -header("Content-Type: image/jpeg"); satırda hata veriyor- . bu dosyayı nasıl çekebilirim.. include işe yaramıyor? cevabını bekliyorum ve verdiğiniz bilgiler için çok teşekkür ediyorum.

  17. header kodunun çalışması için sayfada daha önce ekrana birşey yazılmamış olmalıdır.
    index.php içinde çalıştırmak için oluşturduğunuz resimx.php dosyanın içine bu kodları yazıp kendi index.php niz içine de include 'resimx.php'; yazarak sorunsuz bir çalışma elde edebilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *