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
/*
Author : İbrahim HIZLIOĞLU
Web : http://www.ofissoft.com | http://www.webteders.com
E-Mail : ibrahim.hizlioglu@gmail.com
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
# 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.';
unset($_SESSION['guvenlik']['deger']);
}
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.