IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   PHP (https://www.ircforumlari.net/php/)
-   -   PHP’de Resim Doğrulama - Güvenlik Kodu (https://www.ircforumlari.net/php/477238-php-de-resim-dogrulama-guvenlik-kodu.html)

MorfiN 27 Nisan 2012 20:29

PHP’de Resim Doğrulama - Güvenlik Kodu
 
Son yıllarda üyelik formlarında, üyelik giriş sayfalarında, whois sorgularında, sipariş formlarında . Vs form işleminin gerçekleştiği tüm platformlarda güvenlik kodu / resim doğrulama işlemine rastlamış olmalısınız. Spam botları ve saldırılar gibi sebeplere ayrılsada temel amaç kötü niyetli kullanıcılar/kişilerden korunmada ek bir önlem daha almaktır. Animated Captcha (Hareketli resim doğrulama ) yazısından sonra gelen talep üzerine bilinen resim doğrulama uygulamasına bir örnek sunma gereği gündeme geldi. Örneklemenin daha net anlaşılması için resmi oluşturma, form doldurma ve sonuç basma sayfaları ayrı yapılmıştır. Bu örneği sitenizde çalıştırmak için GD desteğinizin olması gerekmektedir. phpinfo() çıktısında görebilirsiniz. Konsol erişimi olan arkadaşlar php -m komutunu uygulayarak GD modulu kontrol edebilirler

[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]

Öncelikle Form Sayfası : index.php
PHP- Kodu:

<!-- Tarayıcı ön belleğinde tutulmaması için no-cache -->
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//TR" "
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #007700">>
<
html xmlns="
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
style="color: #0000BB">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="sonuc.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

Resim Oluşturma Sayfası: img.php

PHP- Kodu:

<?
session_start
();
/* Olusturulan kodu diger sayfalara tasiyabilmemiz icin oturum baslatiyoruz.
0-999 araliginda bir sayi olusturup bunu md5 ile sifreliyoruz.
*/
$md5yap=md5(rand(0,9999));
 
//md5 ile sifrelenen sayimizin uzunlugu 32 karakter olacaktir. Biz 6 karakterli alacagiz.
$dogrulamakodu strtoupper(substr($md5yap86));
 
//Dogrulama icin kullanicak kodumuzu acilan oturuma kaydediyoruz.
$_SESSION["dogrulamakodu"] = $dogrulamakodu;
 
//Resim boyutlari belirleniyor
$en 75;
$boy 25;
 
//Uzerinde calisacagimiz resim olusturuluyor.
$image ImageCreate($en$boy);
 
//Beyaz,Siyah ve Kirmizi renkler olusturuyoruz. Rakamlar renkleri ifade etmektedir.
$beyaz ImageColorAllocate($image255255255);
$siyah ImageColorAllocate($image000);
$kirmizi ImageColorAllocate($image24200);
 
//Arka plani beyaz yapiyoruz
ImageFill($image00$beyaz);
 
//Olusturulan dogrulama kodunu resime yaziyoruz.
ImageString($image695$_SESSION["dogrulamakodu"], $siyah);
 
//Gorunumu biraz karistirmak icin cizgilerle gorunumu zorlastiriyoruz.
//Dilerseniz imageline() satirlarini kaldirarak cizgileri yok edebilirsiniz.
imageline($image02$en2$kirmizi);
imageline($image025$boy0$kirmizi);
imageline($image$en$boy400$kirmizi);
imageline($image023$en23$kirmizi);
 
// Tarayiciya dosyamizin tipini yolluyoruz.
header("Content-Type: image/jpeg");
 
//Resmimizi Jpg formatinda basiyoruz.
ImageJpeg($image);
 
//Bir kereye mahsus kullanacagimiz icin siliyoruz.
ImageDestroy($image);
exit();

?>

Sonuç Sayfası: sonuc.php

PHP- Kodu:

<?
session_start
();
// Eger form doldurulmussa
if( isset($_POST['kod']) ){
if( 
strtoupper($_POST['kod']) == $_SESSION['dogrulamakodu'] ){
echo 
'
<h4>Tebrikler, Doğru kodu girdiniz: <code>'
.$_POST['kod'].'</code></h4>';
}else{
echo 
'<h4><code>'.$_POST['kod'].'</code>Hatali giris, tekrar deneyiniz. '.$_SESSION['dogrulamakodu'].'</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>
<?}?>



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 07:07.

Powered by vBulletin® Version 3.8.8 Beta 3
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2024 IRCForumlari.Net