Jumat, 12 Februari 2010

IklanBarisMassal.Com: Membuat Kode Captcha dengan PHP (gambar)

Judul Iklan: Membuat Kode Captcha dengan PHP (gambar)
Isi Iklan: Halo kawan. Pada artikel sebelumnya, kita mencoba membuat kode captcha atau kode verifikasi sederhana dengan bantuan PHP. Namun, pada artikel sebelumnya, kita hanya membuat kodenya tampil dalam bentuk teks.


Sekarang kita akan mencoba untuk membuatnya tampil dalam bentuk gambar. Bagaimana caranya? Caranya mudah, kita hanya perlu sedikit menambahkan kode fungsi. File yang akan kita buat kali ini ada 3 buah. 2 buah file yaitu file fungsi.php dan proses_form.php kodenya sama persis dengan file pada artikel sebelumnya.

Baiklah, langsung saja kita buat file yang pertama, yaitu file "fungsi.php", isi dari file ini sama persis dengan file "fungsi.php" pada artikel sebelumnya. Berikut adalah kodenya.

<?php
function captcha()
{
$kar="0123456789";
//acak karakter
srand((double)microtime()*100000);
for($i=0;$i<5;$i++)
{
$c_acak=rand()%10;
$capt.=substr($kar,$c_acak,1);
}
return $capt;
}

?>

Sama persis kan? Simpan dengan nama "fungsi.php" di folder localhost sobat. Setelah itu kita akan membuat file "proses_form.php" yang isinya sama juga dengan file proses_form.php pada artikel sebelumnya. Berikut adalah kodenya:

<?
//dapatkan data
$nama=$_POST['nama'];
$email=$_POST['email'];
$subjek=$_POST['subjek'];
$pesan=$_POST['pesan'];
$kode_user=$_POST['kode_user'];
$kode_server=$_POST['kode_server'];


if($kode_user == $kode_server)
{
$tujuan="wilianto.indra@gmail.com"; //ganti dengan email anda
$header="From: $email";


//kirim
@ mail($tujuan, $subjek, $pesan, $header);
echo "Pesan anda sudah berhasil terkirim";
}
else
echo "Kode captcha tidak valid";
?>

Simpan di folder yang sama dengan file "fungsi.php". Sekarang kita akan membuat file "form.php". File ini sedikit berbeda dengan file form.php pada artikel sebelumnya. Kali ini kita menggunakan fungsi php untuk membuat gambarnya. Berikut adalah source kodenya.

<?
include('fungsi.php');
$proses=$_GET['proses'];
if($proses=='')
$proses='form';
$kode=captcha();

if($proses=='gambar')
{
header('Content-Type: image/jpeg');
//fungsi untuk membuat gambar
$image=imagecreate(70, 30);
//menentukan warna background
imagefill($image, 1, 1, imagecolorallocate($image, 200, 125, 255)); //hitam
//menentukan warna text
$warnatext=imagecolorallocate($image, 12, 152, 0); //putih
//menulis kode pada gambar
imagestring($image, 5, 18, 12, $kode, $warnatext);
//output gambar
imagejpeg($image, "", 80);
//membebaskan memori
imagedestroy($image);
}
elseif($proses=='form')
{
echo"<form action='proses_form.php' method='post'>
<table border=0 cellpadding=4>
<tr><td>Nama:</td><td><input type='text' name='nama'></td></tr>
<tr><td>Email: </td><td><input type='text' name='email'></td></tr>
<tr><td>Subjek:</td><td><input type='text' name='subjek'></td></tr>
<tr><td>Pesan: </td><td><textarea name='pesan' cols='20' rows='5'></textarea></td></tr>
<tr><td><img src='form.php?proses=gambar'></td><td><input type='text' name='kode_user' maxlength=5>Isikan sesuai kode di samping</td></tr>
<input type='hidden' name='kode_server' value='$kode'>
<tr><td colspan=2><input type='submit' value='KIRIM'></td></tr>
</table>
</form>";
}
?>

Oke simpan di folder yang sama dengan file proses_form.php. Kode yang diberi warna merah, merupakan kode yang berfungsi untuk membuat gambar.

Sedikit penjelasan, yaitu pada bagian proses gambar. Kita menggunakan fungsi imagecreate() untuk membuat layout gambarnya. Setelah itu kita tentukan warna latar dari kode dan warna hurufnya dengan fungsi imagefill() dan imagecolorallocate(). Lalu kita tulis kode huruf pada latar, dengan fungsi imagestring() dan kita tampilkan gambar dengan fungsi imagejpeg(). Kita menggunakan fungsi imagejpeg, karena kita menginginkan format gambar yang dibuat bertipe jpeg. Dan yang terakhir kita bebaskan memori dengan fungsi imagedestroy(). Maksudnya kita hilangkan gambar, setiap kali selesai digunakan.

Ditunggu komentarnya.
Web URL: http://wiliantoindrawan.blogspot.com/2010/02/membuat-kode-captcha-dengan-php-gambar.html

Tidak ada komentar:

Posting Komentar