Sabtu, 13 September 2014

Membuat Captcha dengan PHP


Captcha merupakan salah satu hal terpenting dalam memmbangun sebuah jaringan web yang aman, terutama dari tindakan spam. Ada banyak metode yang bisa kita gunakan dalam membuat captcha.  Tapi, disini saya akan menunjukkan metode yang saya ciptakan sendiri, entah di luar sana sudah ada atau tidak, tapi yang jelas metode ini cukup aman dan efektif untuk digunakan dalam website dan lumayan mudah untuk dibuat :)
Cara kerja penampil captcha ini sangat sederhana,
Untuk proses pembuatan captcha langkahnya adalah sebagai berikut:
  • Pertama kita membuat angka acak. Pada tutorial ini, angka acak yang dihasilkan antara 10000 - 99999 (5 digit).
  • Selanjutnya kita membuat kode hash dari angka acak tadi.
  • Kode hash dari captcha disimpaan pada cookie si client.
  • Angka acak dalam bentuk text lalu dibuat ke dalam bentuk gambar  dengan sekumpulan fungsi pemrosesan image pada PHP. Antara lain imagestring(): untuk membuat teks  dan imageline(): untuk membuat garis.



filename : captcha.php
Kode berikut untuk menghasilkan gambar teks captcha acak. sekaligus mengirimkan cookie ke client.


<?php
    srand(time());
    $code = rand(10000,99999);
    $codehash = sha1("NAVI$code");
    setcookie("cap",$codehash,time() + 3600);
   
    //buat gambar
    header("Content-type: image/gif");
    $img = imagecreate(50,20);
    $orange = imagecolorallocate($img,200,180,50);
    $black = imagecolorallocate($img, 0, 0, 0);
    imagestring($img,5,2,2,"$code",$black);
    //vline
    imageline($img,rand(0,49),0,rand(0,49),19,$black);
    imageline($img,rand(0,49),0,rand(0,49),19,$black);
    //hline
    imageline($img,0,rand(0,19),49,rand(0,19),$black);
    imageline($img,0,rand(0,19),49,rand(0,19),$black);
   
    imagegif($img);
    imagedestroy($img);
?>






filename: index.php
Baris kode berikut adalah kode yang menunjukkan gambar captcha dan form untuk mengetik captcha
<img src='captcha.php' />
<form name='captcha_form' method='POST' action='hasil.php'>   
    <input type='text' name='captcha_txt' maxlength='5' />
    <input type='submit' name='submit_btn' value='Submit captcha' />
</form>

<?php   
    if(isset($_POST['captcha_txt']))
    {
        $captcha = $_POST['captcha_txt'];
        $captcha_hash = $_COOKIE['captcha'];
        if(sha1("KOMPUTOO$captcha") == $captcha_hash)
        {
            echo "Captcha benar";
        }
        else
        {
            echo "Captcha salah";
        }
    }
?>

 
Selamat mencoba :)
Load disqus comments

0 comments