Cara membuat captcha

Tutorial By Andra Antariksa

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
session_start();
header("Content-type: image/jpg");
//generate Code
function 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 digunakan sebagai background , kali ini saya menggunakan warna hijau
$im = imagecreatefromjpeg("$images")or die("Cannot Initialize new GD image stream");
$text_color = imagecolorallocate($im, 45, 220, 45); //menentukan warna text
//Generate kode yang akan dituliskan pada gambar sebanyak 6
$text=RandomCode(6);
//Buat sessi untuk pengecekan pada halaman lain
$_SESSION['captcha']=$text;
//Tuliskan text pada gambar
imagettftext($im, 40, 0, 20, 60, $text_color$font$text);
imagejpeg($im);
imagedestroy($im);
?>

Dan jangan lupa membuat backroundnya dengan nama file captcha.jpg
Contoh milik saya :
Backround Captcha

Sekarang bagian file pembaca hasil jawaban captcha simpan dengan nama apapun . Bisa di masukan ke script login :D . Namun saya menamainya cek-captcha.php
1
2
3
4
5
6
7
8
9
10
11
<?php
session_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 adalah session yang di buat oleh captcha.php , dan di cek oleh script di atas :D

Jadi arti dari
1
2
3
if($_POST['captcha'] == $_SESSION['captcha']){
    echo 'Kode yang anda masukkan benar, yaitu <font size="5">'.$_SESSION['captcha'].'</font>';
}
Adalah
1
"Kalau [kode captcha yang di post] sama dengan [captcha di session], 'tampilkan Kode yang anda masukan benar , yaitu [captcha di session]'"
Sedangkan arti dari
1
2
3
4
else {
    echo 'Kode yang anda masukkan salah, seharusnya <font size="5">'.$_SESSION['captcha'].'</font><br />
          Bukan <font size="5">'.$_POST['captcha'].'</font>';
}
Adalah
1
"Selain itu ( kalau [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 :D ?

Nah, sekarang pada bagian formnya
1
2
3
4
5
6
7
<form method="POST" action="cek-captcha.php">
Masukkan kode dibawah ini:
<br><br><img src="captcha.php"// gambar captcha<br><br>
<input type="text" name="captcha" />//name captcha karena $_POST['captcha']
<br>
<input type="submit" value="Ok" />
</form>

Nah selesai, menarik bukan :D  ?

Previous
Next Post »

Berkomentarlah dengan baik dan benar Show Konversi KodeHide Konversi Kode Show EmoticonHide Emoticon

Thanks for your comment