Öncelikle index.php sayfamızı oluşturalım...
index.php
<!--
Tarayıcı ön belleğinde tutulmaması için no-cache -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//TR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="TR" lang="tr">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>wmturk.net - Resim doğrulama uygulamasına ait demo</title>
<form method="post" action="result.php">
Dogrulama Kodu: <img src="img.php" height="25" width="75" />
Doğrulama Kodunu Giriniz: <input size="6" maxlength="6" name="kod" type="text" />
<input value="Test et" type="submit" />
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//TR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="TR" lang="tr">
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>wmturk.net - Resim doğrulama uygulamasına ait demo</title>
<form method="post" action="result.php">
Dogrulama Kodu: <img src="img.php" height="25" width="75" />
Doğrulama Kodunu Giriniz: <input size="6" maxlength="6" name="kod" type="text" />
<input value="Test et" type="submit" />
</form>
</body>
</html>
Şimdi oluşturacağımız img.php ile resmi alacağız..
img.php
/*Öncelikle oturumu başlatmamız gerekiyor ki sayfalar arası veri transferi yapılabilsin...*/
<?php
session_start();
...
?>
/*Rasgele bir sayı üretip md5 şifreyelim.Bu şifreli veri 32 digit olacağı için bunun 6 digitini alalım...*/
...
$uret=md5(rand(0,999));//0-999 arası sayı üretilip md5 şifrelendi...
$dogrulama_kod=strtoupper(substr($uret,3,6)); // bu şifreli verinin 3. indisinden itibaren 6 digit al ve büyük harfe çevrildi...
/*Session variable ları atayalım...Bu değeri diğer sayfalarda kullanabileceğiz...*/
$_SESSION['d_kod']=$dogrulama_kod;
/*Şimdi ise resmin boyutları belirleyerek oluşturalım..*/
$en=75;
$boy=25;
$img=imagecreate($en,$boy);
/*Kullanabileceğimiz renkleri oluşturuyoruz...*/
$beyaz = ImageColorAllocate($img, 255, 255, 255);
$siyah = ImageColorAllocate($img, 0, 0, 0);
$kirmizi = ImageColorAllocate($img, 242, 0, 0);
/*Arka planı da beyaz yapalım...*/
ImageFill($img, 0, 0, $beyaz);// 2. ve 3. parametreler x,y koordinatlarını ifade eder.
/* Kodu resmin üzerine entegre edelim...*/
ImageString($img, 6, 9, 5, $_SESSION["kod"], $siyah);
/*Görüntüyü zorlaştırmak adına resmin içerisine çizgiler çizebiliriz...*/
imageline($img, 0, 2, $en, 2, $kirmizi);
imageline($img, 0, 25, $boy, 0, $kirmizi);
imageline($img, $en, $boy, 40, 0, $kirmizi);
imageline($img, 0, 23, $en, 23, $kirmizi);
/*Resmin formatı belirtilir...*/
header("Content-Type: image/jpeg");
ImageJpeg($img);
/*Oturumu bir defaya mahsus kullandığımız için kapatalım..ve çıkış yapalım...*/
session_destroy($img);
exit();
Bu aşamada sayfanın güvenlik kodları oluşturulmuş oldu...
Son olarak kod doğrulaması yapalım.
result.php :
/*Oturumu başlatalım öncelikle...*/
<?php
session_start();
// Eger form doldurulmussa
if (isset($_POST['kod'])) {
if (strtoupper($_POST['kod']) == $_SESSION['d_kod']) {//güvenlik kodu ve girilen kod karşılatırılır...
echo '<h4>Tebrikler, Doğru kodu girdiniz: <code>' . $_POST['kod'] . '</code></h4>';
} else {
echo '<h4><code>' . $_POST['kod'] . '</code>Hatali giris, tekrar deneyiniz. ' .$_SESSION['d_kod'] . '</h4>';
}
echo '<a href="index.php">Tekrar _fcksavedurl=""index.php">Tekrar" _fcksavedurl=""index.php">Tekrar" dene?</a>';
} else {
?>
<a href="index.php">Sadece post verileri ile calisan bir sayfadir. Giris sayfasina donebilirsiniz.?</a>
<?php
}
?>
session_start();
// Eger form doldurulmussa
if (isset($_POST['kod'])) {
if (strtoupper($_POST['kod']) == $_SESSION['d_kod']) {//güvenlik kodu ve girilen kod karşılatırılır...
echo '<h4>Tebrikler, Doğru kodu girdiniz: <code>' . $_POST['kod'] . '</code></h4>';
} else {
echo '<h4><code>' . $_POST['kod'] . '</code>Hatali giris, tekrar deneyiniz. ' .$_SESSION['d_kod'] . '</h4>';
}
echo '<a href="index.php">Tekrar _fcksavedurl=""index.php">Tekrar" _fcksavedurl=""index.php">Tekrar" dene?</a>';
} else {
?>
<a href="index.php">Sadece post verileri ile calisan bir sayfadir. Giris sayfasina donebilirsiniz.?</a>
<?php
}
?>
şeklinde kodlanırsa girilen guvenlik kodunu testi yapılmış olur...
Bu arada dikkat edilmesi gereken bir nokta ise; kullanıcının güvenlik kodunu doğru fakat küçük harflerle girmesi durumunda da güvenlik kodu doğru kabul edilecektir..