Proteksi Captcha

13 views

Saya pendatang gres 😀 dan mau menulis sebuah tutorial mengenai captcha

 

Captcha ini di gunakan untuk melindungi halaman login / form dari Brute Force , Flood dan Bot. Tapi , bagaimana cara membuatnya ?

 

Pertama , kita buat dulu modul captchanya , simpan dalam file captcha.php

<?phpsession_start();header("Content-type: image/jpg");//generate Codefunction RandomCode($max){//Huruf dan angka yang akan di acak$char = array("A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","j","k","l","m","n","p","q","r","s","t","u","v","w","x","y","z","1","2","3","4","5","6","7","8","9"); //huruf dan angka yang akan di gunakan$keys = array();while(count($keys) < $max) {$x = mt_rand(0, count($char)-1);if(!in_array($x, $keys)) { $keys[] = $x; }}$random='';foreach($keys as $key => $val){ $random .= $char[$val];  }return $random;}$font='./font/VeraMoBd.ttf'; //setting font yang akan digunakan$images='./captcha.jpg'; //gambar yang akan dipakai sebagai background , kali ini aku memakai warna hijau$im = imagecreatefromjpeg("$images")or die("Cannot Initialize new GD image stream");$text_color = imagecolorallocate($im, 45, 220, 45); //menentukan warna text//Generate aba-aba yang akan dituliskan pada gambar sebanyak 6$text=RandomCode(6);//Buat sessi untuk pengecekan pada halaman lain$_SESSION['captcha']=$text;//Tuliskan text pada gambarimagettftext($im, 40, 0, 20, 60, $text_color, $font, $text);imagejpeg($im);imagedestroy($im);?>

 

Dan jangan lupa menciptakan backroundnya dengan nama file captcha.jpg

Contoh milik aku :

 

Sekarang bab file pembaca hasil balasan captcha simpan dengan nama apapun . Bisa di masukan ke script login 😀 . Namun aku menamainya cek-captcha.php

<?phpsession_start();if($_POST['captcha'] == $_SESSION['captcha']){echo 'Kode yang anda masukkan benar, yaitu <font size="5">'.$_SESSION['captcha'].'</font>';}else{echo 'Kode yang anda masukkan salah, seharusnya <font size="5">'.$_SESSION['captcha'].'</font><br />  Bukan <font size="5">'.$_POST['captcha'].'</font>';}?>

Yang di maksud $_SESSION[‘captcha’] itu yaitu session yang di buat oleh captcha.php , dan di cek oleh script di atas 😀

 

Jadi arti dari

if($_POST['captcha'] == $_SESSION['captcha']){echo 'Kode yang anda masukkan benar, yaitu <font size="5">'.$_SESSION['captcha'].'</font>';}

Adalah

"Kalau [kode captcha yang di post] sama dengan [captcha di session], 'tampilkan Kode yang anda masukan benar , yaitu [captcha di session]'"

Sedangkan arti dari

} else {echo 'Kode yang anda masukkan salah, seharusnya <font size="5">'.$_SESSION['captcha'].'</font><br />  Bukan <font size="5">'.$_POST['captcha'].'</font>';}

Adalah

"Selain itu ( bila [kode captcha yang di post] sama dengan [captcha di session]) , tampilkan 'Kode yang anda masukan sala, seharusnya [captcha di session] . Bukan [kode captcha yang di post]"

Mengerti 😀 ?

 

Nah, kini pada bab formnya

<form method="POST" action="cek-captcha.php">Masukkan aba-aba dibawah ini:<br>
<img src="captcha.php"// gambar captcha
<br><input type="text" name="captcha" />//name captcha alasannya $_POST['captcha']<br><input type="submit" value="Ok" /></form>

 

Nah selesai, menarik bukan 😀  ?

 

Author: 
    author
    No related post!