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
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";
}
}
?>
<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 :)
0 comments