Membuat captcha dengan php

26 April 2010

Membuat captcha dengan php merupakan tutorial yang menjelaskan bagaimana cara membuat captcha atau security image dengan menggunakan php.
Adapun captcha sendiri menurut wikipedia adalah:

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. Proses ini biasanya melibatkan suatu komputer (server) yang meminta seorang pengguna untuk menyelesaikan suatu uji sederhana yang dapat dihasilkan dan dinilai oleh komputer tersebut.


CAPTCHA. (2010, Maret 15). Wikipedia, . Diakses pada 14:45, Maret 25, 2010 dari http://id.wikipedia.org/w/index.php?title=CAPTCHA&oldid=2986211.

 Untuk membuatnya terlebih dahulu pastikan pada server anda GD Library sudah terinstall. untuk mengeceknya buatlah script berikut ini menggunakan editor web yang anda miliki kemudian simpanlah diroot folder server anda dengan nama phpinfo.php:
<!--phpinfo.php-->
<?
phpinfo();
?>
Melalui brower anda akseslah file tersebut. Jika PHP GD Library sudah terinstall maka akan terlihat setting PHP GD seperti gambar dibawah ini :


Jika PHP GD belum terinstall maka kunjungilah link berikut ini untuk mengetahui cara menginstallnya :
http://id2.php.net/manual/en/book.image.php

Langkah berikutnya adalah membuat sebuah gambar background dengan tipe *.jpg dengan ukuran yang anda bisa tentukan sendiri namun disini saya menggunakan ukuran 60x30px. contoh gambarnya seperti berikut ini :


setelah itu bukalah kembali web editor yang anda miliki dan buatlah sebuah file baru dengan nama captcha.php dan ketikanlah script kode berikut ini :
<?php
//captcha.php


session_start();
$alphaNumeric  = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
$random = substr(str_shuffle($alphaNumeric), 0, 5);
$image = imagecreatefromjpeg("captchabg.jpg"); //lokasi file gambar
$textColor = imagecolorallocate ($image, 0, 0, 0); //black
imagestring ($image, 5, 5, 8,  $random, $textColor);
$_SESSION['image_random_value'] = md5($random);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header('Content-type: image/jpeg');
imagejpeg($image);
imagedestroy($image);
?>

 buatlah lagi sebuah file baru dengan nama form.php dan ketikan script kode berikut ini :
<form name="form1" method="post" action="">
<img src="captcha.php?date=<?php echo date('YmdHis');?>" alt="security image" />
<div>
Input Text Above: <input type="text" name="pin" />
<input type="submit" name="submit" value="Submit" />
</div>
</form>
<?php
if($_POST['submit']){
session_start();
if(md5($_POST['pin']) == $_SESSION['image_random_value']){
echo '<p>Captcha Benar</p>';
}else{
echo '<p>Captcha Salah</pa>';
}
}?>
Jalankan script form.php melalui webbrowser anda dan akan tampil seperti gambar berikut ini :

Kemudian coba anda input nilai yang berasal dari gambar captcha dan lihatlah hasilnya..
Selamat mencoba Membuat captcha dengan phpSocialTwist Tell-a-Friend

8 comments:

Anonymous said... Reply

pada saat tombol submit di tekan, perintah jalan. namun ada warning seperti dibawah ini :
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

GnouBdilS said... Reply

coba dibawah session start ditambahkan kode berikut ini :

<?php ob_start();

ob_end_clean(); ?>

kalau masih belum bisa juga coba kamu perhatikan baik-2 terhadap penggunaan include di file kamu.
kejadian seperti itu juga biasanya bisa terjadi dikarenakan manajemen file yang tidak tertata dengan baik.
main include sana include sini.

atau kalau masih bingung juga kamu bisa kasih script lengkapnya biar saya bisa liat kesalahannya.

ia mas.. bener.. saya juga muncul pesan itu.. Emang kalo awalnya run, ga muncul,, tapi pas tekan tombol submit langsung muncul pesan error kyk gitu.. coding yg saya ketik sama persis dengan coding yg mas buat.. Mohon pencerahannya...

GnouBdilS said... Reply

@arief_spekta:

sudah coba menggunakan ob_start dan ob_end_cleannya belum?
coba bisa script lengkapnya biar saya liat kesalahannya.

Tetap nggak bisa mas walau gunaik ob_start dan ob_end_clean :)

Tapi sekarang udah bisa, tadi saya oprek ternyata cuma penempatan session_startnya yg kurang tepat pada form.php. Tambahin baris ini di baris paling pertama dan hapus session_start(); yang sebelumnya ada di tengah2 baris pada form.php

Makasih banyak mas atas sharenya :)

GnouBdilS said... Reply

@arief_spekta:

sebenarnya pada contoh yang saya berikan bukan kurang tepat. tapi contoh yang saya berikan hanya contoh dalam bentuk simpel jadi penempatan session_start(); pun bisa tidak diletakan di awal code..
lain cerita jika sudah kompleks..
penempatan session_start(); pun harus disesuaikan

Derry said... Reply

saya coba ... kok kodenya gambarnya gak tampil ya?? pdaha GD lib saya uda "enable" semua apalgi pakai gambar sendiri mohon pencerahan plissss

GnouBdilS said... Reply

@Derry:

bisa kirimkan script yang anda buat biar saya bisa liat kesalahannya

Post a Comment

Artikel Lain

 
 
 

Go To Link

  »  A1VBCode
  »  Bina Sarana Informatika
  »  Blogger
  »  Deconstruction Code
  »  Diskusiweb
  »  dremi.info
  »  Echo
  »  Facebook
  »  Gary Abraham
  »  Ilmu Website
  »  JQuery
  »  Mahesajenar Widget
  »  STMIK Nusa Mandiri
  »  OOM Blog
  »  Planet Source Code
  »  Rahma Blog
  »  Terren Jr
  »  VB-Bego
  »  Herry Blog

Advertisement