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
| <?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 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 gambarimagettftext($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 :
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
| <?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 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 ?
Berkomentarlah dengan baik dan benar Show Konversi KodeHide Konversi Kode Show EmoticonHide Emoticon