PHP ile adım adım güvenlik için captcha yapımı(turkish tutorial)

Words
351
Reading
2 min
Listen
Play
9y

English
Hello to everyone my name is eresbos,

  • How to create step to step captcha with PHP?

Türkçe

Merhaba arkadaşlar ben eresbos.Bugün sizlere php ile gd kütüphanesini kullanarak adım adım güvenlik için captcha nasıl oluşturabiliriz ve ram'de yer kaplamaması için image destroy ile ram'den nasıl silinir konusunu anlatacağım.

Kodlarımız ;
1.png

<?php

header('Content-type:image/png');
$resim = ImageCreate (100, 50);

$arkaplan = ImageColorAllocate($resim, rand(0,125), rand(0,125), rand(0,125));
$yazi_rengi = ImageColorAllocate ($resim, rand(125, 255), rand(125, 255), rand(125, 255));

ImageFill($resim, 0, 0, $arkaplan);

$kod = rand(0, 999999);

ImageString ($resim, 5, 20, 15, $kod, $yazi_rengi);


ImagePng ($resim);

ImageDeetroy($resim);


?>

1- Değişkenlerimizi tanımlayalım, kullanacağımız ilk fonksiyon ImageCreate olacak, genişlik ve yüksekliği ayarlamak için iki adet değer belirteceğiz.İlk değerimiz genişlik (100) ikinci değerimiz yükseklik olacak (50).Bu satır bizim tuvalimiz olacak captchayı bu tuvalin üzerinde göstereceğiz.
$resim değişkeni.png

$resim = ImageCreate (100, 50);

2- Arka plan rengimizi tanımlayalım, bunun için ImageColorAllocate fonksiyonunu kullanacağız daha sonra resim değişkenini belirteceğiz($resim).Rengini belirleyeceğiz bunun için üç farklı rgb değeri girmemiz gerekiyor.Ben her yenilenme işleminde farklı renk olsun diye random değer belirledim rand(0,125).
$arka plan değişkeni.png

$arkaplan = ImageColorAllocate($resim, rand(0,125), rand(0,125), rand(0,125));

3- Yazı rengimizi tanımlayalım, bunun için ImageColorAllocate fonsiyonunu kullanacağız.Burada tuvalimizi belirtmek için $resim değişkenini kullanıyoruz.Her captcha'da farklı bir sayı vermesi için üç farklı değer belirteceğiz.Captcha'nın okunabilmesi için rand(125, 255) şeklinde değer belirtmemiz gerekecek eğer yukarıdakiyle aynı değeri yazarsak rand(0,125) captcha'da yazı ve tuvalin renginin aynı olup okunamama gibi bir durumu olabilir.
$yazi_rengi değişkeni.png

$yazi_rengi = ImageColorAllocate ($resim, rand(125, 255), rand(125, 255), rand(125, 255));

4- Arka planımızı oluşturduk, arka plan rengimizi oluşturduk ve yazı rengimizi oluşturduk.Şimdi sıra tuvalimize renk atamaya geldi.Bunun için ImageFill fonsiyonunu kullanacağız.Tuvalimizi belirtmek için $resim değişkenini yazıyoruz, $resim değişkeninin hangi kordinatlardan başlayarak rengi atayacağımızı $resim, 0, 0, olarak belirliyoruz.Sıra geldi hangi rendi atayacağımızı belirlemeye.Bunun için $arkaplan değişkenini kullanıyoruz.
imagefill.png

ImageFill($resim, 0, 0, $arkaplan);

5- Yazımızın iki sayı arasında ekrana basılması için $kod değişkenimizi kullanacağız.Sayının iki değer arasında random belirlenmesi için rand(0, 999999) kodunu yazıyoruz.
$kod değişkeni.png

$kod = rand(0, 999999);

6- Resmin üzerinde hangi yazının çıkmasını belirlemek için ImageString fonsiyonunu kullanacağız.Sonra tuvalimizi $resim değişkeni olarak belirtiyoruz.Yazı tipi değerini atamak için sayısal değer kullanıyoruz (5) ve yükseklik değerlerimizi belirtiyoruz (20,15).Resmin üzerinde yazacak olan yazıyı belirlemek için $kod değişkenini kullanıyoruz.Yazının rengini belirtmek için $yazi_rengi değişkenimizi kullanıyoruz.
imagestring.png

ImageString ($resim, 5, 20, 15, $kod, $yazi_rengi);

7- Sonucu ekrana bastırmak için ImagePng fonksiyonunu kullanacağız.Burada sadece tuval olarak belirlediğimiz $resim değişkenini kullanmamız yeterli.Bu şekilde resmi ram'e almış olduk.
imagepng.png

ImagePng ($resim);

8- Resmimizin ram'de yer kaplamaması için gösterdikten sonra ImageDestroy ile ram'den resmi siliyoruz.
imagedestroy.png

ImageDestroy($resim);

9- Son olarak şu anki haliyle sayfada göstermeye çalışırsak hata verecektir çünkü sayfayı resim olarak tanıtmamız gerekiyor bunun içinde header komutunu kullanacağız.

header('Content-type:image/png');

  • Sonuç ekranları;

1.png
3.png
2.png
4.png

Github link : https://github.com/php/php-src



Posted on Utopian.io - Rewarding Open Source Contributors

PHP ile adım adım güvenlik için captcha yapımı(turkish tutorial) | Ecency