Rabu, 28 Januari 2009

Posted By; Anggi
Membuat Security Code | Security Image | Anti Spam
14-03-2007 | 11:22:57 | Halaman Ini dibaca 2481 kali



Hai... selamat siang semuanya,kali ini saya mau menjelaskan bagaimana
cara membuat Security Code - Security Image - atau Captcha

Apa itu Security Image/ Security Code?

security image adalah suatu bentuk perlindungan terhadap suatu form
dari serangan SPAM,

Sebagai contoh pernakah anda mengisi formulir pendaftaran untuk mendapatkan
email account di yahoo??
lihat bagian bawah diatas tombol submit, di situ ada security code
yang muncul...dan anda harus mengisi security code tersebut


cara Kerjanya?

Pertama:
formulir akan menampilkan security code yang di generate oleh script
PHP, apabila page tersebut di refresh maka security code akan di
generate lagi sehingga berubah codenya
hal ini sangat berguna sekali untuk menangkal serangan spam

Kedua:
Setelah di submit script php akan memvalidasi data anda dan mencocok kan
security code yang telah anda masuk kan
apabila security code tidak sama, maka proses akan di batalkan
apabila security code sama, maka proses akan dilanjutkan


File Script yang akan kita gunakan kali ini terdiri dari 2 file script

1. script form.htm
2. script action.php
3. script captchasecurityimages.php
4. file font

Penjelasan:

====================================================================
ingat ini hanya contoh, anda bisa mengembangkan sendiri script anda
====================================================================

1. script form.htm

-------

Pesan:



Security Code:



-------




2. script action.php

-------
session_start();

if( isset($_POST['submit'])) {
if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) {
// masukkan script anda jika validasi benar
echo 'Terimakasih Pasan anda: "'.$_POST['message'].'"';
} else {
// masukkan script anda jika validasi salah
echo 'Sorry, anda memasukkan security code yang salah
';
include "form.htm";

}
} else {

include "form.htm";

}
?>
-------



3. script captchasecurityimages.php

-------

session_start();
class CaptchaSecurityImages {
var $font = 'monofont.ttf';
function generateCode($characters) {
/* list all possible characters, similar looking characters and vowels have been removed */
$possible = '23456789bcdfghjkmnpqrstvwxyz';
$code = '';
$i = 0;
while ($i < $characters) {
$code .= substr($possible, mt_rand(0, strlen($possible)-1), 1);
$i++;
}
return $code;
}
function CaptchaSecurityImages($width='120',$height='40',$characters='6') {
$code = $this->generateCode($characters);
/* font size will be 75% of the image height */
$font_size = $height * 0.75;
$image = @imagecreate($width, $height) or die('Cannot Initialize new GD image stream');
/* set the colours */
$background_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 20, 40, 100);
$noise_color = imagecolorallocate($image, 100, 120, 180);
/* generate random dots in background */
for( $i=0; $i<($width*$height)/3; $i++ ) {
imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color);
}
/* generate random lines in background */
for( $i=0; $i<($width*$height)/150; $i++ ) {
imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color);
}
/* create textbox and add text */
$textbox = imagettfbbox($font_size, 0, $this->font, $code);
$x = ($width - $textbox[4])/2;
$y = ($height - $textbox[5])/2;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code);
/* output captcha image to browser */
imagejpeg($image);
imagedestroy($image);
$_SESSION['security_code'] = $code;
}
}
$width = isset($_GET['width']) ? $_GET['width'] : '120';
$height = isset($_GET['height']) ? $_GET['height'] : '40';
$characters = isset($_GET['characters']) ? $_GET['characters'] : '6';
header('Content-Type: image/jpeg');
$captcha = new captchasecurityimages($width,$height,$characters);

?>
-------



4. file font

monofont.ttf

*keterangan:
anda harus mengupload juga file font nya, sebagai contoh saya
menggunakan font "monofont.ttf" file font yang ukurannya paling kecil
cocok buat website

Semua file di atas harus di tempatkan pada directory/ folder yang sama


Sumber :
-berbagai sumber (luarnegri)