Membuat Captcha dengan PHP


Captcha merupakan suatu kode / sandi dalam bentuk huruf atau angka atau gabungan keduanya yang digunakan sebagai anti spam pada suatu form. Bentuk captcha bermacam-macam, jenis dan gaya desainnya juga bermacam-macam, namun memiliki fungsi yang sama. Dengan menggunakan captcha kita bisa mencegah robot / script robot yang akan merusak sistem kita dengan cara memasukkannya berulang-ulang.

Langkah pembuatan Captcha adalah sebagai berikut:

1. Membuat file index.php
<!DOCTYPE html>
<html>
<head>
  <title>Bedah PHP - Cara Membuat Captcha dengan php</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <div class="kotak">
    <?php
    if(isset($_GET['pesan'])){
      if($_GET['pesan'] == "salah"){
        echo "<center><b style='color: red'>Captcha tidak sesuai !</b></center>";
      }
    }
    ?>
    <p>Isi Captcha Dengan Benar</p>
    <form action="periksa_captcha.php" method="post">
      <table align="center">
        <tr>
          <td>Captcha</td>
          <td><img src="captcha.php" alt="gambar" /></td>
        </tr>
        <td>Isikan captcha</td>
        <td><input name="nilaiCaptcha" value=""/></td>
        <tr>
          <td><input type ="submit" value="Cek Captcha"></td>
        </tr>
      </table>
    </form>
  </div>
</body>
</html>
2. Membuat file captcha.php
<?php
//mengaktifkan session
session_start();

header("Content-type: image/png");

//menentukan session
$_SESSION["Captcha"]="";

//membuat gambar dengan menentukan ukuran
$gbr = imagecreate(150, 50);

//warna background captcha
imagecolorallocate($gbr, 69, 179, 157);

//pengaturan font captcha
$color = imagecolorallocate($gbr, 253, 252, 252);
$color2 = imagecolorallocate($gbr, 0, 0, 0);
$font = "Monaco.ttf";
$ukuran_font = 20;
$posisi = 32;

//membuat nomor acak dan ditampilkan pada gambar
for($i=0;$i<=5;$i++){
  // jumlah karakter
  $angka=rand(0, 9);

  $_SESSION["Captcha"].=$angka;

  $kemiringan= rand(-20, 20);
  imagettftext($gbr, $ukuran_font, $kemiringan, 9+15*$i, $posisi, $color, $font, $angka);
  imagettftext($gbr, $ukuran_font, $kemiringan, 11+15*$i, $posisi, $color2, $font, $angka);
}

//untuk membuat gambar
imagepng($gbr);
imagedestroy($gbr);
?>
3. Membuat file cek.php untuk periksa kode captcha
<!DOCTYPE html>
<html>
<head>
  <title>Bedah PHP - Cara Membuat Captcha dengan php</title>
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <div class="kotak">
    <?php
    session_start();
    if($_SESSION["Captcha"]!=$_POST["nilaiCaptcha"]){
      header("location:index.php?pesan=salah");
    }else{
      echo "<center>";
      echo "<b style='color: green'>Captcha Anda Benar</b><br>";
      echo "<br><a href='index.php'>HOME</a>";
      echo "</center>";
    }
    ?>
  </div>
</body>
</html>
4. Membuat file style.php sebagai desain form nya
body{
  font-family: "roboto";
  background: #F4F4F4;
}
h1,p{
  text-align: center;
}
.kotak{
  margin: 10px auto;
  background: #fff;
  width: 400px;
  padding: 20px 0px;
}
.kotak table tr td{
  padding: 5px;
}
.kotak table tr td input{
  padding: 5px;
  font-size: 12pt;
}
Direktori File
DOWNLOAD SOURCE CODE DISINI

Komentar