Header Ads

Menerapkan Kode Keamanan atau Captcha Security Images Dengan Native PHP

Menerapkan Kode Keamanan atau Captcha Security Images Dengan Native PHP

Kode keamanan (Captcha) terkadang diperlukan pada website kita, terutama pada bagian laman yang meminta user untuk mengisi data atau iputan dari user, karena tidak jarang robot-robot jail yang bisa saja mengisi data sembarangan dan mengirim (submit), bisa kita bayangkan kalau tidak ada pengaman seperti captcha bisa-bisa database kita dibuat penuh dengan data sampah.

Sebenarnya kita bisa menggunakan kode keamanan matematika atau juga menggunakan google captcha, tetapi kali ini saya akan membahas tentang bagaimana cara Menerapkan Kode Keamanan atau Captcha Security Images Dengan Native PHP, captcha ini dikembangkan oleh Simon Jarvis pada tahun 2006 dan kita dapat menggunakan secara bebas dan dapat mengembangkannya sesui dengan ketentuan lisensi GNU. Sedangkan untuk dapat menjalankan aplikasi ini anda membutuhkan PHP versi 4 atau 5.

Sekarang kita akan bahas kode yang dibuat oleh Simon adalah sebuah Class php yang didalamnya terdapat 2 Fuction yaitu Fuction generateCode untuk membangkitkan kode secara acak terdiri dari huruf dan angka, sedangkan Fuction CaptchaSecurityImages berfungsi merubah kode menjadi gambar tidak hanya itu fungsi ini juga menetukan ukuran huruf, warna, membuat titik dan garis untuk menyamarkan kode. perhatikan penggalan kode berikut :

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, 170,170,180);
  $noise_color = imagecolorallocate($image, 200,190,238);
  /* 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) or die('Error in imagettfbbox function');
  $x = ($width - $textbox[4])/2;
  $y = ($height - $textbox[5])/2;
  imagettftext($image, $font_size, 0, $x, $y, $text_color, $this->font , $code) or die('Error in imagettftext function');
  /* output captcha image to browser */
  header('Content-Type: image/jpeg');
  imagejpeg($image);
  imagedestroy($image);
  $_SESSION['security_code'] = $code;
 }

Setelah anda memahami Class diatas sebagai file terpisah dengan nama CaptchaSecurityImages.php, baru kita dapat menerapkan pada laman-laman yang memerlukan kode keamanan, sebagai contoh pada halaman kontak, berikut scriptnya:


<?php 
session_start();

if( isset($_POST['submit'])) {
   if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
  // kamu dapat menambahkan kode disini untuk proses berikutnya. seperti contoh kode dibawah ini
  
  echo 'Kode pengaman yang anda inputkan sudah benar dengan pesan : "'.$_POST['message'].'"';
  unset($_SESSION['security_code']);
   } else {
  // disini kamu dapat tambahkan jika kode keamanan yang diinputkan salah
  echo 'Maaf brow, kamu salah masukkan kode keamanan';
   }
} else {
?>

 <form action="form.php" method="post">
  <label for="message">Pesan: </label><br/><textarea rows="5" cols="30" name="message" id="message"></textarea><br />
  <img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /><br />
  <label for="security_code">Kode keamanan: </label><br/><input id="security_code" name="security_code" type="text" /><br />
  <input type="submit" name="submit" value="Submit" />
 </form>

<?php
 }
?>

perhatikan pada script php yang berwarna merah, ini artinya kode captcha akan digerate pada bagian ini jadi anda dapat menyesuaikan dengan kebutuhan. dan script diatas akan menghasilkan form kontak sederhana yang akan berkerja ketika user berhasil memasukkan kode dengan benar.

Semoga artikel sederhana ini bermanfaat, jika ada pertanyaan silahkan tinggalkan komentar ya... salam php

Sebenarnya saya berharap anda mempelajari script php diatas baris-perbaris sehingga dapat memahaminya, akan tetapi jika mentok anda dapa mengunduhnya dari ling dibawa ini hanya sebagai bahan referensi. Semangat...!

 Menerapkan Kode Keamanan atau Captcha Security Images Dengan Native PHP


No comments

Beri komentar sebagai jejak anda dan masukan atau pendapat anda yang bermanfaat bagi perkembangan SCL dalam menulis artikel cuma-cuma ini, tetapi ingat tidak berbau p*rno, sara, tidak memasang link aktif dan tentunya tidak melanggar hak cipta orang lain ya...