Verifikasi Form Menggunakan Captcha 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. Karena komputer lain tidak dapat memecahkan CAPTCHA, pengguna manapun yang dapat memberikan jawaban yang benar akan dianggap sebagai manusia. Oleh sebab itu, uji ini kadang disebut sebagai uji Turing balik, karena dikelola oleh mesin dan ditujukan untuk manusia, kebalikan dari uji Turing standar yang biasanya dikelola oleh manusia dan ditujukan untuk suatu mesin. CAPTCHA umumnya menggunakan huruf dan angka dari citra terdistorsi yang muncul di layar Sumber : wikipedia.org.
Sebelum ada CAPTCHA, spammer/hacker dapat membuat program untuk secara otomatis mengisi formulir seperti pendaftaran email gratis, sehingga ia akan memperoleh ribuan alamat email dengan mudah untuk kemudian disalah-gunakan Atau untuk mengubah hasil sebuah polling online, seseorang bisa saja membuat program sederhana untuk mengisi polling tersebut dengan jawaban yang sama sebanyak ribuan atau bahkan jutaan kali. Akibatnya polling itu tentu saja menjadi tidak valid
-
Fungsi Pokok dari captcha itu sendiri adalah :
- Mencegah Comment Spam pada umumnya Pemilik web/blog/dll tidak hanya ingin komment webnya terlihat bagus dalam penampilan, kuantitas tapi tentu kualitas , tp gak tau kalo adminnya sendiri yang spam
- Mencegah Spam Bot Tau sendiri Kan bot tak bisa membaca captcha, karena string string pemrogramannya sudah tetap . tak mungkin capthca yang setiap saat berubah dapat dibaca kecuali kalau bot itu berasal dari engine Blog itu sendiri
- Mencegah Flood Siapa Yang Ingin Dia di Flood ? kecuali flood like tp kalau flood kata kata yang tidak pantas banyak lagi siapa yang mau coba ?? (Flood adalah mangirimkan data secara berulang ulang)
- Melindungi Pendaftaran Email/User Dulu Pernah Kejadian Yahoo dan google diserang semacam robot yang mendaftar email ampe ribuan! kebayang gak? ribuan mail palsu , pasti om google dan mpok yahoo marah
Captcha biasanya terdiri dari 3 hal, yaitu bentuk, distorsi, dan teks. Ikuti langkah-langkah berikut ini untuk membuat sebuah captcha :
- Tampilan Gambar kosong pada browser Langkah pertama kita membuat sebuah folder dengan nama captcha yang berisi file index.php dan image.php
- Buat bentuk Selanjutnya kita akan memilih persegi panjang dengan menggunakan fungsi imagefilledrectangle(). Kemudian fungsi imagecollorallocate() yang berfungsi mengalokasikan warna dengan kombinasi RGB.
- Menghasilkan garis acak Sekarang kita akan mulai membuat bagian distorsi captcha. Dalam PHP, garis yang dihasilkan dari titik awal (x1, y1) ke titik akhir (x2, y2). Kita akan membuat sebuah garis acak dengan menggunakan fungsi for.
- menghasilkan titik acak Titik acak akan dihasilkan dalam cara yang sama seperti garis acak. Fungsi yang digunakan adalah imagesetpixel(). Fungsi ini mengambil nilai koordinat dimana titikakan ditempatkan di dalam kotak.
- Menghasilkan teks acak Sekarang kita akan membuat teks acak yang menunjukkan posisi didalam string
- Gambar Referensi
- Font Ukuran teks (mulai dari angka 1 sampai 5)
- x-koordinat (berubah secara proporsional untuk setiap alfabet)
- y-koordinat (tetap sama, meskipun kita bisa merubah ini secara acak)
- String yang harus ditulis di dalam gambar
- Font warna teks
index.php
<?php session_start(); ?> <!DOCTYPE html> <html> <head> <title>Aplikasi Captcha</title> <style> body{ background-color: #ddd; margin: 20px; } .wrapper{ display:block; width: 400px; margin: 0 auto; } </style> </head> <body> <?php include_once "image.php"; create_image(); ?> <div class="wrapper"> <form action="proses.php" method="post"> <h2>Belajar Membuat Captcha</h2> <p><img src="image.png"></p> <input type="text" name="nilaiCaptcha" > <input type="submit" name="submit" value="SUBMIT"> </form> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> <input type="submit" value="RESET"> </form> </div> </body> </html>image.php
<?php function create_image(){ $image = imagecreatetruecolor(150, 50); imagepng($image, "image.png"); } ?>
Di dalam function create_image(), variabel yang digunakan untuk merujuk gambar dikembalikan oleh imagecreatetruecolor() fungsi yang mengambil lebar dan panjang gambar sebagai argumen. imagepng() menciptakan citra png dari nama tertentu dan path (dalam direktori yang sama). Perlu diperhatikan bahwa fungsi imagepng akan menjadi baris terakhir dari function create_image.
Sebuah gambar dengan warna hitam akan menjadi output setelah langkah pertama kita selesai buat.
$color = imagecolorallocate($image, 255, 255, 255); imagefilledrectangle($image, 0, 0, 400, 50, $color);
$color_line = imagecolorallocate($image, 0, 0, 0); // membuat garis pada gambar for($i=0; $i<5; $i++){ imageline($image, 0, rand()%50, 150, rand()%50, $color_line); }
// membuat titik titik pada gambar for($i=0; $i<1000; $i++){ imagesetpixel($image, rand()%150, rand()%50, $color_line); }
// membuat abjad di dalam gambar $abjad = "abcdefghijklmnopqrstuvwxyz"; $len = strlen($abjad); $abjads = $abjad[rand(0, $len-1)]; $kata = ""; for($i=0; $i<5; $i++){ $abjads = $abjad[rand(0, $len-1)]; imagestring($image, 5, 5+($i*30), 20, $abjads, $color_line); $kata .= $abjads; } $_SESSION['captcha'] = $kata;imagestring() berfungsi untuk menulis teks dalam gambar yang telah kita buat dan memilik 6 argumen :
image.php
<?php function create_image(){ $image = imagecreatetruecolor(150, 50); $color = imagecolorallocate($image, 255, 255, 255); imagefilledrectangle($image, 0, 0, 400, 50, $color); $color_line = imagecolorallocate($image, 0, 0, 0); // membuat garis pada gambar for($i=0; $i<5; $i++){ imageline($image, 0, rand()%50, 150, rand()%50, $color_line); } // membuat titik titik pada gambar for($i=0; $i<1000; $i++){ imagesetpixel($image, rand()%150, rand()%50, $color_line); } // membuat abjad di dalam gambar $abjad = "abcdefghijklmnopqrstuvwxyz"; $len = strlen($abjad); $abjads = $abjad[rand(0, $len-1)]; $kata = ""; for($i=0; $i<5; $i++){ $abjads = $abjad[rand(0, $len-1)]; imagestring($image, 5, 5+($i*30), 20, $abjads, $color_line); $kata .= $abjads; } $_SESSION['captcha'] = $kata; imagepng($image, "image.png"); } ?>
Sekarang kita buat untuk langkah untuk pemrosesannya. buatlah sebuah file dengan nama proses.php
proses.php
<?php session_start(); $submit = $_POST['submit']; $nilaiCaptcha = $_POST['nilaiCaptcha']; if (isset($submit)) { if (empty($nilaiCaptcha)) { echo "<script>window.alert('Form tidak boleh kosong'); window.location=('index.php');</script>"; }else{ if($_SESSION['captcha'] == $nilaiCaptcha){ header('location:halaman_utama.php'); }else{ echo "<script>window.alert('Captcha anda salah'); window.location=('index.php');</script>"; } } } ?>
Langkah terakhir kita membuat sebuah halaman untuk menampilkan jika inputan captcha bernilai benar.
halaman_utama.php
<!DOCTYPE html> <html> <head> <title>Selamat Datang</title> </head> <body style="margin-top:20px;"> <div style="width:400px; margin:0 auto;"> <h2>Selamat Datang</h2> <p>Anda telah berhasil memasukkan <b><i>Nilai Captcha</i></b></p> <p><a href="index.php" style="text-decoration:none;">Kembali</a></p> </div> </body> </html>
Demo
Tampilan awal kita akan melihat tampilan seperti dibawah ini
Jika kita menuliskan nilai captcha dengan benar, maka kita akan menuju ke halaman utama
Jika kita salah menulis nilai captcha, akan menampilkan alert bahwa captcha yang ditulis salah.
Kesimpulan
Membuat berbagai jenis CAPTCHA di PHP sangatlah mudah. Artikel ini mencakup tiga hal dasar yang digunakan untuk membuat captcha standart : Bentuk, Distorsi dan Teks. Kode yang disajikan disini tidak boleh digunakan dalam pembuatan CAPTCHA di sebuah website karena ada alternatif CAPTCHA yang sangat baik seperti reCAPTCHA, yang juga mendukung output suara. Saya harap anda bisa memahami alur yang telah dijelaskan diatas. Tinggalkan komentar dan umpan balik dibawah ini.
Download kode lengkapnya di bawah sini
Belum ada tanggapan untuk "Verifikasi Form Menggunakan Captcha"
Posting Komentar