TELAH DIBUKA !!!

Toko Ebook Tutorial "RosihanAri.Net"


Free Ebook Tutorial from Rosihan Ari's Blog

Tutorial Javascript | Tutorial PHP | Tutorial AJAX | Tutorial CSS | Tutorial FPDF | Tutorial Wordpress | Tutorial Java SE


 photo 300x250_zpsff09f9e7.gif
Slot iklan tersedia, pasang iklan di atas

Ebook yang direkomendasikan untuk Anda
Ebook Panduan Praktis OOP di PHP

Membuat Script Captcha Berbentuk Soal Hitungan Matematika


June 3rd, 2012 | by rosihanari | Cetak Artikel Cetak Artikel

GampSMS SMS Gateway

Bosan dengan model captcha berbentuk huruf-huruf acak yang itu-itu saja? kenapa tidak mencoba membuat sendiri captcha berbentuk soal hitungan matematika? yang tidak hanya berfungsi mencegah spam tapi juga melatih pengunjung situs kita untuk belajar matematika :-)

Nah, dalam blog tutorial gratis kali ini saya akan mencoba memaparkan cara membuat sendiri captcha hitungan matematika ini dengan PHP. Captcha ini nanti berbentuk soal penjumlahan, pengurangan dan perkalian dari dua buah bilangan. Lho kok hanya tiga operasi saja? kenapa pembagiannya tidak? iya, karena untuk pembagian dikhawatirkan hasil pembagiannya tidak bulat sehingga cukup merepotkan pengunjung situs Anda. Bagi Anda yang tertarik untuk mempelajarinya, maka segera praktikkan di situs web Anda. Ternyata ide dasarnya mudah kok, tidak terlalu ribet.

Bagaimana ide membuat scriptnya? pertama nantinya kita generate dua buah bilangan bulat mulai dari 0 s/d 10 atau dengan range sembarang alias terserah Anda. Boleh juga 0 s/d 99 atau -99 s/d 99 atau boleh juga ratusan, atau ribuan dst, terserah Anda :-) Dua bilangan ini nantinya akan muncul di kode captcha nya. Kemudian, pilih secara acak juga operator nya, apakah penjumlahan, pengurangan atau perkalian. Setelah itu, hitung hasil operasi dari kedua bilangan tersebut dan kemudian simpan hasilnya dalam sebuah session.

Dengan hasil perhitungan yang disimpan dalam session itulah, kita bandingkan dengan hasil jawaban yang diisikan oleh pengunjung situs. Jika hasilnya sama, maka kode captcha benar. Namun jika tidak sama, maka kode captcha salah.

Demikian ide pembuatannya, sekarang kita bisa melakukan codingnya. Untuk script captcha ini, saya buat dalam gaya OOP. Di sini saya membuat class dengan nama ‘mathcaptcha’. Berikut ini isi class nya.

class-captcha.php

<?php
session_start();

class mathcaptcha
{
    private $bil1;
    private $bil2;
    private $operator;

    function initial()
    {
        $listoperator = array('+', '-', 'x');
        $this->bil1 = rand(0, 99);
        $this->bil2 = rand(0, 99);
        $this->operator = $listoperator[rand(0, 2)];
    }

    function generatekode()
    {
        $this->initial();

        if ($this->operator == '+') $hasil = $this->bil1 + $this->bil2;
        else if ($this->operator == '-') $hasil = $this->bil1 - $this->bil2;
        else if ($this->operator == 'x') $hasil = $this->bil1 * $this->bil2;
        $_SESSION['kode'] = $hasil;
    }

    function showcaptcha()
    {
        echo "Berapa hasil dari ".$this->bil1." ".$this->operator." ".$this->bil2." ? ";
    }	

    function resultcaptcha()
    {
        return $_SESSION['kode'];
    }

}
?>

Keterangan:

Di dalam class ‘mathcaptcha’ di atas, ada beberapa method yang saya buat yaitu initial(), generatekode(), showcaptcha() dan resultcaptcha(). Kegunaan dari method initial() adalah mengenerate secara acak dua buah operand atau bilangan, serta operator aritmatikanya. Dua bilangan dipilih acak dari bilangan 0 s/d 99. Sedangkan tanda operator aritmatikanya dipilih salah satu secara acak dari 3 pilihan, yaitu: +, – dan x.

Selanjutnya untuk method generatekode() digunakan untuk mengenerate hasil perhitungan dari dua bilangan dan operator yang dipilih secara acak tadi. Selanjutnya hasilnya disimpan dalam sebuah session bernama $_SESSION['kode'].

Method showcaptcha() nantinya digunakan untuk menampilkan kode captcha nya, yang terdiri dari 3 bilangan dan tanda operator aritmatikanya.

Terakhir, method resultcaptcha() digunakan untuk membaca kode hasil operasi matematikanya.

Nah… setelah class ‘mathcaptcha’ dibuat, sekarang kita implementasikan dalam sebuah form. Perhatikan contoh script form berikut ini

index.php

<?php
    // memanggil script class
    include 'class-captcha.php';
    // membuat obyek class
    $captcha1 = new mathcaptcha();
    // panggil method untuk mengenerate kode
    $captcha1->generatekode();
?>

<html>
    <head>
       <title>Contoh Captcha Matematika</title>
    </head>
    <body>
        <h1>Form Entri Data</h1>
        <form method="post" action="submit.php">
            <table>
                <tr><td>Nama Anda</td><td>:</td><td><input type="text" name="nama"></td></tr>
                <tr><td>Email Anda</td><td>:</td><td><input type="text" name="email"></td></tr>
            </table>	

            <p><b>Kode Verifikasi</b></p>
            <p>
              <?php
                   // menampilkan kode captcha berisi soal matematika
                   $captcha1->showcaptcha();
              ?>
            <br>
            <input type="text" name="kode">
            </p>
            <p><input type="submit" name="submit" value="Submit"></p>

        </form>
    </body>
</html>

Tampilan dari form di atas adalah sbb:

Tampilan form dengan captcha matematika

Kemudian bagaimana dengan script pemrosesan form setelah disubmit? ini dia bentuknya

submit.php

<?php
// panggil script class
include 'class-captcha.php';
// membuat obyek class
$captcha1 = new mathcaptcha();

// jika kode hasil perhitungan dari session sama dengan kode
// yang dimasukkan user, maka kode captcha cocok
if ($captcha1->resultcaptcha() == $_POST['kode'])
{
    echo "<p><b>Kode verifikasi benar</b></p>";
    echo "<p>Berikut ini data yang Anda masukkan ke dalam form</p>";
    echo "<p>Nama : ".$_POST['nama']."</p>";
    echo "<p>Email : ".$_POST['email']."</p>";
}
else
{
    // jika kode captcha salah
    echo "<p><b>Kode verifikasi salah</b></p>";
}

echo "<p><a href='index.php'>Ulangi Entri</a></p>";

?>

Nah… mudah dan sederhana bukan membuatnya?? Selamat mencobanya, dan oya lupa.. ada baiknya bilangannya jangan besar-besar ya hasilnya, supaya pengunjung situs atau yang mengentri form tidak terlalu pusing mencari jawabannya, misalkan spt tampilan berikut ini :-)

Tampilan form dengan captcha matematika

Jika Anda yang masih merasa bingung dengan OOP (Object Oriented Programming) di PHP sehingga sulit memahami script di atas, ada baiknya pelajari dahulu ebook saya ‘Panduan Praktis OOP di PHP‘. Dijamin tidak bingung lagi, Insya Allah :-)


Baca Juga Artikel Terkait
Cara Mudah Menulis Formula Matematika (Equation) di WordPress dengan WP-QuickLatex
Pembahasan Soal Olimpiade Komputer Kabupaten #2
Buku Platinum Matematika untuk SMA
Cara Mudah Memasang Anti Spam dengan ReCaptcha di PHP
Pembahasan Soal Olimpiade Komputer Provinsi 2005 #4


 photo 300x250_zpsff09f9e7.gif
Slot iklan tersedia, pasang iklan di atas


Kata kunci: captcha matematika - object oriented programming - php oop - script captcha - script php -


Ada 36 komentar dalam artikel ini.



  1. terima kasih atas informasinya

  2. nurlely says:

    pa,,saya boleh minta source kode aplikasi pengolahan nilai yg kumplit ga dimulai data mhs sampai ipk?mohon bantuannya untuk tgs saya…terimakasihh ^_^

  3. terima kasih , cuman kok kalo masukin kode verifikasi nya masih tetep ke simpen yah ?
    salah nya di mana yah ?

  4. rian eka says:

    muncul ini knp ya

    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:\xampp\htdocs\laporan\kirimpassword.php:11) in C:\xampp\htdocs\laporan\kirimpassword.php on line 12

  5. eSN says:

    terima kasih om atas ilmunya, bagus banget tulisannya.

  6. nita says:

    kalau anti spam milik sy, bukan soal matematika. tapi berupa check box. tp sy tidak tau ini bekerja dengan baik atau tidak

    sebelum komentar di submit, user harus mencentang checkbox yang berisi (saya bukan spammer)

    jika checkbox tersebut tidak dicentang, maka data tidak dapat di submit

    contohnya ada di blog[dot]fastncheap[dot]com

  7. x-sun says:

    sangat lngkap,mksh pak



 

Komentar/pertanyaan Anda!

Mohon maaf, komentar/pertanyaan yang menggunakan email palsu atau komentar bernada negatif, cemooh, umpatan, cacian atau sejenisnya secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

Mohon maaf jika seandainya ada beberapa pertanyaan Anda yang tidak direspon atau ditanggapi mengingat banyaknya komentar yang masuk dan keterbatasan kemampuan/ilmu saya dalam menjawab pertanyaan satu persatu. Saya harap Anda bisa memahami dan memakluminya.

Semua komentar atau pertanyaan yg masuk tidak akan langsung tampil di halaman ini, karena akan dimoderasi dahulu.


*