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 ;
<?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 = 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).
$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 = 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($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 = 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 ($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 ($resim);
8- Resmimizin ram'de yer kaplamaması için gösterdikten sonra ImageDestroy ile ram'den resmi siliyoruz.
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ı;
Github link : https://github.com/php/php-src
Posted on Utopian.io - Rewarding Open Source Contributors
Hey @eresbos I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]