Membuat captcha dengan pertanyaan penjumlahan pengurangan dan perkalian dengan php

Pernahkah anda mendapati sebuah form pendaftaran yang mengharuskan anda untuk mengisi kode captcha dimana captcha yang digunakan mengandung sebuah pertanyaan misalya :

1 + 9 = ?
3 x 9 = ?

dan lain - lain. Pada kesempatan kali ini, kami akan memberikan contoh pembuatan captcha pertanyaan dengan lengkap untuk anda.

 

Sebelum melanjutkan ke bagian kode, mari kita ulas lagi bagaimana sebenarnya captcha itu dibuat, sehingga muncul beberapa pertanyaan bagi kita, antara lain:

 

 

  • Mengapa captcha bisa berbentuk gambar ?
  • Apakah captcha harus berbentuk gambar atau bisa berbentuk text biasa yang dimunculkan secara random ?

Didalam PHP, captcha bisa dibuat dengan menggunakan library PHP GD yaitu dengan menggunakan fungsi imagecreate atau fungsi imagecreatetruecolor. Dengan fungsi ini, kita bisa membuat gambar yang dinamis yang bisa kita gunakan sebagai captcha.

Pada dasarnya captcha tidak harus berbentuk gambar, kita juga bisa membuatnya dalam sebuah text biasa yang dihasilkan secara random setiap kali diakses. Hanya saja cara ini tidak dianjurkan karena text yang tertampil sebagai plain text pada halaman html akan bisa diambil secara mudah oleh program - program robot, sehingga program - program robot bisa mengisi form captcha anda dengan benar. Berbeda jika captcha dibuat menggunakan gambar, tentunya akan lebih sulit bagi aplikasi - aplikasi robot untuk mengenali isinya, karena dengan berbasis gambar kita bisa menggunakan background dalam bentuk pola tertentu sehingga isinya hanya bisa dikenali oleh manusia.

Pada contoh dibawah ini, kami mencoba menyajikan captcha dengan pertanyaan dalam bentuk operasi penambahan, pengurangan dan perkalian

<?php
session_start();
header("Content-type: image/png");
function GenerateCode() {
	$possible ='123456789';
	$operator ='+x-';	
	$a = substr($possible, mt_rand(0, strlen($possible)-1), 1);
	$b = substr($possible, mt_rand(0, strlen($possible)-1), 1);
	$opr = substr($operator, mt_rand(0, strlen($operator)-1), 1);
	if($opr=='+'){
		$res = $a + $b;
	}
	else if($opr=='x'){
		$res = $a * $b;
	}
	else{
		$res = $a - $b;
	}
	$code['res']  = $res;
	$code['text'] = $a.' '.$opr.' '.$b.' = ?';
	return $code ;
}
$font='./alba.ttf';
$images='background.png';
$im = imagecreatefrompng($images)or die("Cannot Initialize new GD image stream");
$black = imagecolorallocate($im, 0, 0, 0);
// The text to draw
$string=GenerateCode();
$_SESSION['key']=$string['res'];
imagettftext($im, 15, 0, 10, 20, $black, $font, $string['text']);
imagepng($im);
imagedestroy($im);
?>

Pada contoh diatas terdapat sebuah fungsi GenerateCode() dimana fungsi tersebut akan membuat sebuah kemungkinan operasi penjumlahan, perkalian atau pengurangan. Mengapa tidak menggunakan pembagian, sebaiknya jangan , kasihan pengunjung nanti akan kesulitan terutama ketika bertemu dengan pembagian seperti 9/7. (^_^)" . Pada function GenerateCode, akan dihasilkan tampilan operasi seperti 1 + 3 = ? serta nilai dari hasil operasi tersebut


Pada contoh diatas juga kita temui sebuah font dengan nama alba.ttf, bagaimana kita mendapatkan font tersebut, font tersebut kita dapatkan dari folder Windows/fonts. Apakah kita harus menggunakan font alba.ttf? Jawabannya tentu tidak, silahkan anda coba - coba sendiri dengan jenis font yang lainnya

Selain font, contoh diatas juga membutuhkan sebuah gambar yang akan kita gunakan sebagao background dari captcha kita, di mana pada contoh ini file yang kita gunakan adalah background.png

Proses selanjutnya yang begitu penting buat kita adalah fungsi imagecreatefrompng dimana background.png akan dibuat diambil oleh php sebagai background dari captcha kita untuk selanjutnya akan digabungkan dengan text yang dhasilkan oleh fungsi GenerateCode().

Proses terakhir dalam script captcha kita adalah imagettftext, dimana fungsi ini akan memasukkan text ke gambar kita sehingga pada gambar akan terlihat sebuah pertanyaan, misalnya 1 x 2 = ?. Pada fungsi imagettftext, kita bisa mengatur ukuran font, derajat kemiringan,jarak kiri, jarak atas bawah, warna text, jenis font serta text yang akan dimasukkan pada captcha. Untuk mengetahui lebih lanjut, silahkan anda coba ganti2 angka yang tertulis pada fungsi imagettftext, kemudian perhatikan perubahan yang terjadi

Untuk melengkapi proses pembelajaran dari tutorial ini, silahkan anda download contoh captcha dari project diatas. Script ini sudah kami uji coba dan berjalan secara normal pada xampp 1.8.0 dengan php version 5.4.4

Download tutorial Captcha penjumlahan, pembagian dan pengurangan. Untuk menguji aplikasi, silahkan akses alamat http://localhost/nama_folder/


Komentar pembaca

Andriasscriptnya saya jalankan kok contain error ya?posting pada :2016-08-21 10:38:26
         
     
         
 
         
   
         
   
 

Tulis komentar