Menu Melayang

Sabtu, 30 Mei 2015

Cara membuat script captcha dengan php GD


Kali ini penulis akan menunjukkan cara - cara mudah dalam membuat captcha dengan menggunakan fungsu GD pada php. Kalo kita kembali pada captcha itu sendiri, maka yang harus kita ketahui adalah
"Apa sebenarny captcha itu, apa fungsinya, dan kapan kita perlu captcha ?"

Jawaban yang bisa penulis sajikan adalah : Captcha merupakan sekumpulan kode yang digenerate secara otomatis dimana kode yang dihasilkan adalah kode acak dan kode tersebut akan digunakan sebagai kode verifikasi. Captcha biasanya digunakan untuk proteksi terhadap spam atau double posting pada halaman - halaman input website. Captcha sendiri tidak hanya berbentuk gambar dan text , akan tetapi sekarang bisa berbentuk suara, contohnya pada form pendaftaran email Yahoo.

sekarang, bagaimana cara membuat captcha dengan menggunakan php, berikut langkah - langkah mudah membuat captcha dengan menggunakan fungsi GD pada PHP. Sebelum membuat captcha, ada beberapa hal yang harus kita sediakan terlebih dahulu, diantaranya adalah :
  1. Font => digunakan untuk menentukan tampilan jenis text pada captcha
  2. Gambar => di gunakan sebagai background pada captcha
Langkah - langkah pembuatannya adalah sebagai berikut :

1. Buat script captcha.php seperti dibawah :
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
34
35
36
37
38
39
40
<?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");
$keys = array();
while(count($keys) < $max) {
    $x = mt_rand(0, count($char)-1);
    if(!in_array($x, $keys)) {
       $keys[] = $x;  
    }      
}
foreach($keys as $key => $val){
   $random .= $char[$val]; 
}
return $random;
}
//setting font yang akan digunakan
$font='./font/VeraMoBd.ttf';
//gambar yang akan digunakan sebagai background
$images='./images/mk-logo.jpg';
//Buat gambar fungsi GD php
$im = imagecreatefromjpeg("$images")or die("Cannot Initialize new GD image stream");
//Generate kode yang akan dituliskan pada gambar sebanyak 6
$text=RandomCode(6);
//Buat sessi untuk pengecekan pada halaman lain
$_SESSION['captcha']=$text;
//menentukan warna text // cc801e cc=204  80=128   1e=30
$text_color = imagecolorallocate($im, 204, 128, 30);
//Tuliskan text pada gambar
imagettftext($im, 40, 0, 20, 60, $text_color, $font, $text);
imagejpeg($im);
imagedestroy($im);
?>

Untuk fungsi - fungsi dari kode diatas silahkan baca komentar - komentar yang terdapat dalam program. Script captcha.php diatas akan berfungsi seperti gambar yang dapat kita akses dengan menggunakan script html <img src="captcha.php" title="captcha" />, sehingga pada halaman html kita akan terlihat gambar dengan kombinasi kode yang dihasilkan dari proses generate secara otomatis.

2. Buat form login

Form login ini bisa kita buat dengan ektensi .html atau .php, karena form ini hanya digunakan untuk menampilkan form dan juga untuk menampilkan captcha. kode html dari form simple yang telah penulis buat adalah sebagai berikut :
1
2
3
4
5
6
7
8
9
10
11
<form method="post" name="frm" action="cek-captcha.php">
Masukkan kode dibawah ini:
<br />
<em>ingat : case sensitive</em>
<br />
<input type="text" name="captcha" />
<br />
<img src="captcha.php" />
<br />
<input type="submit" name="btnCaptcha" value="Ok" />
</form>

Pada form diatas dapat kita lihat bahwa kita hanya menggunakan perintah html image seperti biasa untuk menampilkan gambar captcha pada halam login.
yaitu pada kode <img src="captcha.php" />
3. Membuat script cek-captcha.php

Script ini digunakan untuk melakukan pengecekan kebenaran kode yang di masukkan oleh user. Struktur dari script cek-captcha.php adalah sebagai berikut :

1
2
3
4
5
6
7
8
9
10
<?php
session_start();
if($_POST['captcha'] == $_SESSION['captcha']){
    echo 'Kode yang anda masukkan benar, yaiut <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>';
}
?>
Script ini memanfaat session yang telah dibuat pada saat script captcha diload pada halaman form-login. jika kode yang di inputkan user sesuai dengan session yang sudah ada, maka akan ditampilkan pesan sukses, begitu pula sebaliknya akan ditampilkan pesan kesalahan jika kode yang di inputkan oleh user salah.


Blog Post

Related Post

Back to Top

Cari Artikel