Membuat captcha dengan PHP tidak terlalu sulit. Beberapa waktu yang lalu salah seorang pengunjung bernama Wahyu inigin tahu cara membuat authentication code seperti saat add friend di Facebook. Pengen tahu caranya? Ya.. dengan captcha.
Captcha merupakan kependekan dari "Completely Automated Public Turing test to tell Computers and Humans Apart", atau gampangnya agar robot/script otomatis tidak akan bisa mengisi form. Contoh kegunaannya adalah agar pengisian form atau comment tidak bisa otomatis.
Mula-mula, kita akan membuat sebuah script PHP yang akan membuat output dan mengubahnya menjadi gambar Captcha, dan kita namai captcha.php. Isi scriptnya seperti ini:
session_start();
$width = 140;
$height = 70;
$im = imagecreate($width, $height);
$bg = imagecolorallocate($im, 0, 0, 0);
// generate random string
$len = 5;
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$string = '';
for ($i = 0; $i < $len; $i++) {
$pos = rand(0, strlen($chars)-1);
$string .= $chars{$pos};
}
$_SESSION['captcha_code'] = md5($string);
// grid
$grid_color = imagecolorallocate($im, 175, 0, 0);
$number_to_loop = ceil($width / 20);
for($i = 0; $i < $number_to_loop; $i++) {
$x = ($i + 1) * 20;
imageline($im, $x, 0, $x, $height, $grid_color);
}
$number_to_loop = ceil($height / 10);
for($i = 0; $i < $number_to_loop; $i++) {
$y = ($i + 1) * 10;
imageline($im, 0, $y, $width, $y, $grid_color);
}
// random lines
$line_color = imagecolorallocate($im, 130, 0, 0);
for($i = 0; $i < 30; $i++) {
$rand_x_1 = rand(0, $width - 1);
$rand_x_2 = rand(0, $width - 1);
$rand_y_1 = rand(0, $height - 1);
$rand_y_2 = rand(0, $height - 1);
imageline($im, $rand_x_1, $rand_y_1, $rand_x_2, $rand_y_2, $line_color);
}
// write the text
$text_color = imagecolorallocate($im, 255, 0, 0);
$rand_x = rand(0, $width - 50);
$rand_y = rand(0, $height - 15);
imagestring($im, 10, $rand_x, $rand_y, $string, $text_color);
header ("Content-type: image/png");
imagepng($im);
?>
Langkah berikut dalam membuat Captcha lebih mudah lagi. Kita akan menggunakan Captcha ini dalam sebuah form.
0 komentar:
Posting Komentar