Belajar Web

Belajar Web: Membuat Captcha Dengan PHP

Membuat Captcha Dengan PHP

Posted by Gora Santika


Sumber Gambar : www.captcha.ru
Bagi anda yang kerap berkunjung ke forum, situs download, atau jejaring sosial lain pasti sudah tidak asing dengan istilah Captcha. Menurut Wikipedia, "CAPTCHA atau Captcha adalah suatu bentuk uji tantangan-tanggapan (challange-response test) yang digunakan dalam perkomputeran untuk memastikan bahwa jawaban tidak dihasilkan oleh suatu komputer.". Secara sederhana, Chapta digunakan untuk membatasi spambots yang biasa membombardir input pada sebuah situs.
Contoh sederhana ada pada sebuah forum. Ketika user hendak submit post, maka ia diminta untuk mengisi captcha. Jika tidak menggunakan captcha, mungkin spambots akan memasukkan ribuan post sekaligus dalam sebuah forum.
Pada pembahasan kali ini, kita akan belajar membuat captcha sederhana menggunakan PHP. Adapun algoritma program yang akan kita buat adalah sebagai berikut :
  1. Membuat random text yang akan dijadikan sebagai kode verifikasi.
  2. Menampilkan random text kepada user.
  3. Mencocokkan input dari user dengan random text.
Pada project ini, kita akan mengeksekusi algoritma tersebut dengan 3 buah file sederhana :
  • img.php (membuat random text)
  • captcha.html (menampilkan random text pada user)
  • check.php (mencocokan input dengan kode)

Saatnya beraksi...

img.php

Pertama, kita buat random text. Kemudian menyimpannya dalam sebuah variable. Setelah itu menyajikannya dalam wujud gambar agar tidak dapat di-copas (copy-paste).
<?php
// membuat random text dari 0 - 9999
$code=rand(0,9999);

// menyimpan random text pada session
session_start();
 $_SESSION["captcha"]=$code;

// mengubah text menjadi gambar
$im = imagecreate(150, 40);

$bg = imagecolorallocate($im, 0, 0, 0);
$fg = imagecolorallocate($im, 0, 255, 0);
$font = 5;

imagestring($im, $font, 50, 10, $code, $fg);

header('Content-type: image/png');
imagepng($im);

imagedestroy($im);
?>
Untuk penjelasan mengenai mengubah text menjadi gambar, dapat membaca lebih lanjut pada PHP.net

captcha.html

Merupakan halaman HTML yang berisi sebuah form yang akan menampilkan gambar kode yang telah dibuat oleh img.php serta menyediakan tempat bagi user untuk memasukkan data.
<form action="check.php" method="post">

 <!-- tempat menulis komentar -->
 <textarea name="komentar" cols="50" rows="8">
  Tulis apa saja di sini
 </textarea><br>

 <!-- menampilkan kode random text -->
 <img src="img.php" style="float:left;" />

 <!-- tempat menulis captcha -->
  Tulis teks di samping :<br>
  <input name="kode" type="text"><br>

 <!-- tombol kirim -->
 <input type="submit" value="Kirim">
</form>

check.php

Sebuah halaman PHP yang berisi perintah untuk mencocokkan input captcha user dengan input captcha yang telah dibuat oleh img.php
<?php
// set variable
 session_start();
 // komentar user
 $komentar=$_POST["komentar"];
 // input captcha user
 $kode=$_POST["kode"];
 // kode captcha dari img.php
 $captcha=$_SESSION["captcha"];

// jika captcha dari img.php kosong
if(empty($captcha))
{
 // redirect ke captcha.html untuk ambil kode
 header("location:captcha.html");
}
// jika captcha dari img.php tidak kosong
else{
  // jika captcha sama dengan input user
  if($kode==$captcha)
  {
   echo("Captcha yang anda masukkan benar.<br>");
   echo("Komentar anda :<br>");
   echo($komentar);
  }
  // jika captcha tidak sama dengan input user
  else
  {
   echo("Captcha yang anda masukkan salah.<br>");
   echo("Silakan ulangi.");
  }
}
?>
Hasil dari percobaan di atas adalah: » seperti ini «


[Semoga Bermanfaat]

3 Responses so far.

  1. Unknown says:

    bro...untuk membuat captcha paling cocok menggunakan algoritma apa?

    tks b4..

Leave a Reply