Membuat Captcha Sederhana


Membuat Captcha Sederhana

kali ini saya akan share tutorial cara membuat captcha sederhana, captcha digunakan terutamanya untuk mengelakkan perisian automatik (bot) dari melakukan tindakan sama seperti manusia melakukan sign up atau login dan sebagainya. Misalnya ketika sign up untuk akun email baru, anda akan menemui captcha di bahagian bawah sign-up, Ini sebenarnya untuk memastikan bahawa form tersebut hanya boleh diisi oleh manusia dan bukannya perisian automatik atau komputer bot.
fungsi dari captcha sendiri bisa juga diartikan untuk menguji kebenaran dari suatu jawaban yang soalnya diberikan oleh computer yang berupa angka dan huruf, tujuan captcha adalah untuk membedakan apakah jawaban itu dari computer atau dari manusia.
ok kita langsung saja ke inti pembahasan, pertama buatlah projek dengan nama terserah anda, kemudian buat file dengan nama index.php dan salin kode berikut
<!DOCTYPE html>
<html>
<head>
<title>MEMBUAT CAPTHA SEDERHANA</title>
<script type="text/javascript">
 window.onload = function() {
  document.getElementById('send_data').addEventListener('click', function() {
   var http,
   response,
   captcha;

   captcha = document.getElementById('captcha');
   if (window.XMLHttpRequest) {
    http = new XMLHttpRequest();
   } else {
    http = new ActiveXObject('Microsoft.XMLHTTP');
   }

   http.onreadystatechange = function() {
    if (http.readyState == 4 && http.status == 200) {

     // set response menjadi JSON
     response = JSON.parse(http.responseText);

     // munculkan pesan
     alert(response.message);

     // kosongkan textbox
     captcha.value = '';
    }
   }

   http.open('POST', 'cek.php', false);
   http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
   http.send('captcha='+ captcha.value);
  });
 }

</script>
</head>
<body>
<img src="captcha.php"><br />
<input type="text" id="captcha" /><br />
<button id="send_data">CEK CAPTCHA</button>
</body>
</html>
selanjutnya yaitu buat script yang akan memproses captcha yang di kirim melalui textbox yang di input
silahkan salin kode berikut dan simpan file didalam projek yang sudah anda buat dengan nama cek.php
<?php
 session_start();

 $captcha = $_POST['captcha'];

 // jika captcha tidak kosong
 if (!empty($captcha)) {

  // jika captcha sesuai dengan image
  if ($captcha == $_SESSION['captcha']) {
   $response = array(
    'error'=>false,
    'message'=>'Captcha valid'
   );

  // jika captcha tidak sesuai dengan image
  } else {
   $response = array(
    'error'=>false,
    'message'=>'Captcha invalid'
   );
  }

 // jika captcha kosong
 } else {
  $response = array(
   'error'=>false,
   'message'=>'Please enter captcha'
  );
 }

 // buat response berupa JSON
 echo json_encode($response);
dan yang terakhir adalah membuat captcha nya, silahkan salin kode berikut dan simpan di dalam projek yang sudah anda buat dengan nama captcha.php
<?php
 session_start();
 header('Content-type: image/png');

 // mengacak huruf dan angka
 $chart = str_shuffle('0123456789abcdefghijklmnopqrstuvwxyz');

 // ambil 5 karankter dari chart yang di acak
 $captcha = substr($chart, 0, 5);

 // simpan captcha di dalam session
 $_SESSION['captcha'] = $captcha;

 // membuat gambar
 // imagecreate(P, L)
 // P : panjang, L : tinggi
 $image = imagecreate(65, 30);

 // membuat background dan text
 // imagecolorallocate(image, red, green, blue);
 $background = imagecolorallocate($image, 2, 89, 47);
 $text = imagecolorallocate($image, 255, 255, 255);

 imagefilledrectangle($image, 0, 0, 65, 30, $background);
 imagestring($image, 20, 10, 7, $captcha, $text);
 imagejpeg($image);
 imagedestroy($image);
sekarang buka projek anda dengan browser, dan coba masukan captcha yang tertera pada browser anda jika captcha yang di masukan adalah benar maka anda akan mendapatkan pesan Captcha valid sedangkan jika tidak, anda akan mendapatkan pesan Captcha invalid
ok sampai disini dulu tutorial kali ini, selamat mencoba dan semoga bisa bermanfaat.

Berbagi Via

Share Facebook Share Twitter Share Google+ Share Pinterest
Jangan lupa tinggalkan komentarnya ya :)

2 comments: