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