Membuat captcha dengan php

Membuat captcha dengan php

CAPTCHA digunakan untuk melindungi pengiriman otomatis melalui form oleh mesin-mesin -nakal- yang kirimanya biasanya disebut spam. CAPTCHA ini memastikan bahwa yang mengirimkan data adalah human atau manusia. Anda mungkin sering menemui ini pada saat anda mengisi formulir secara online. Bentuknya beragam ada yang bentuk gambar angka, huruf, gabungan angka dan huruf secara acak, bahkan model perhitungan angka.

Berikut ini cara membuat captcha dengan php. Silahkan lihat kode berikut :

<?php
   session_start();
   $width = 75; //Ukuran lebar
   $height = 25; //Tinggi
   $im = imagecreate($width, $height);
   $bg = imagecolorallocate($im, 0, 0, 0);
   $len = 5; //Panjang karakter 
   $chars = "12345abcdefg"; //Kombinasi huruf dan angka yang diacak
   $string = '';
   for ($i = 0; $i < $len; $i++) {
   $pos = rand(0, strlen($chars)-1);
   $string .= $chars{$pos};
   }
   $_SESSION['kodecap'] = $string; //hasil acak disimpan dalam session
//menambahkan titik2 gambar / noise
   $bgR = mt_rand(100, 200); $bgG = mt_rand(100, 200); $bgB = mt_rand(100, 200);
   $noise_color = imagecolorallocate($im, abs(255 - $bgR), abs(255 - $bgG), abs(255 - $bgB));
   for($i = 0; $i < ($width*$height) / 3; $i++) {
   imagefilledellipse($im, mt_rand(0,$width), mt_rand(0,$height), 3, rand(2,5), $noise_color);
   }
// proses membuat tulisan
   $text_color = imagecolorallocate($im, 240, 240, 240);
   $rand_x = rand(0, $width - 50);
   $rand_y = rand(0, $height - 15);
   imagestring($im, 12, $rand_x, $rand_y, $string, $text_color);
   header ("Content-type: image/png"); //Output format gambar
   imagepng($im);
?> 

Copy kode tersebut dan simpan dalam file kodeacak.php

Kemudian kita buat lagi sebuah file dengan kode berikut :

<?php
   session_start();
   if($_POST['kodeacak']) {
   if($_SESSION['kodecap']==$_POST['kodeacak']) {
      echo "Benar"; } 
   else {
      echo "Salah"; }
   }
?>
<form id="FAcak" name="FAcak" method="post" action="kirim.php">
	<p>
 	<input name="kodeacak" type="text" id="kodeacak" size="6" maxlength="6" />
 	<img src="kodeacak.php" width="75" height="25" alt="Kode Acak" />
	</p>
	<p><input type="submit" name="button" id="button" value="Kirim" /></p>
</form>

Simpan file dengan nama kirim.php. Silahkan anda coba panggil file kirim.php dan isi sesuai dengan kode yang muncul disamping inputan.

Silahkan download contoh lengkapnya disini. Download Contoh Membuat captcha dengan php

Semoga bermanfaat

Zainal Hakim

** Bebas disunting dengan menyebutkan sumber **

Artikel Lainnya

  • Memformat angka dengan php
    Nilai yang dihasilkan dalam perhitungan di php bisa kita format sesuai keperluan dengan menggunakan fungsi number_format(). Berikut contoh penggunaanya.
  • Membuat layout sederhana dengan css
    Berikut ini saya akan berbagi tentang cara membuat layout/tampilan halaman web sederhana dengan html dan css. Layout yang saya buat sangat sederhana dengan susunan 2 kolom yang dilengkapi pula dengan header, menu pada bagian atas serta bagian footer. Silahkan anda simak berikut.
  • Membuat nilai random dengan php
    PHP telah menyediakan function yang dapat digunakan untuk mengambil nilai secara acak/random dalam batasan nilai tertingi dan terendah, caranya sangat mudah. Lihat kode singkat berikut.
  • Script mengirim email dengan php
    Mengirim email tidak hanya bisa dilakukan menggunakan aplikasi seperti outlook atau thunderbird, tapi juga bisa menggunakan script/kode php.
  • Menampilkan kiriman twitter dengan php
    Twitter adalah salah satu media sosial terbesar yang sering digunakan oleh pengguna internet. Twitter menyediakan banyak fasilitas yang bisa digunakan untuk berbagai keperluan dalam bentuk widget atau plugin yang bisa dengan mudah ditempel pada halaman web termasuk untuk menampilkan status yang sudah dikirim user tertentu. Karena sifatnya fasilitas umum dengan fitur yang sama maka tentunya kita tidak bisa mengubah format tampilanya sesuai keperluan kita. Tapi ini bisa kita lakukan dengan menggunakan php. SIlahkan baca atikel berikut.

Kiriman terbaru