Saturday, March 20, 2010

Tutorial Script PHP: Membuat Captcha Dengan Script PHP

Belum tahu captcha?captcha adalah gambar (bisa juga rekaman suara) yang memperlihat kan suatu huruf atau objek lain yang digunakan untuk mengkonfirmasi bahwa kita atau yang menginputkan form atau hal sejenisnya adalah manusia, bukan bot. Sebagai contoh captha:

Untuk membuat captcha yang akan saya berikan pada tutorial kali ini diperlukan beberapa script, gambar, dan font huruf.
Script untuk membuat captcha: (captcha_image.php)

<?
session_start();
$random=md5(microtime());
$random=substr($random,0,5);
$NewImage =imagecreatefrompng("captcha.png");

$LineColor1=imagecolorallocate($NewImage,100,100,255);
$LineColor2=imagecolorallocate($NewImage,255,125,0);
$TextColor=imagecolorallocate($NewImage,255,100,100);

$text_x=rand(0,125);
$text_y=rand(20,75);
$line1_x1=rand(0,199);
$line1_x2=$text_x-5;
$line1_y1=rand(0,80);
$line1_y2=$text_y-5;
$font='font.ttf';
imageline($NewImage,0,0,$line1_x1,$line1_y2,$LineColor2);
imagettftext($NewImage,18,0,$text_x,$text_y,$TextColor, $font, $random);
imageline($NewImage,$line1_x1,$line1_y1,$line1_x2,$line1_y2,$LineColor1);
imageline($NewImage,$line1_x1,$line1_y1,200,0,$LineColor1);
imageline($NewImage,$line1_x1,40,100,$line1_y2,$LineColor2);

$_SESSION['key']=$random;
header("Content-type: image/png");
imagepng($NewImage);
imagedestroy($NewImage);
?>

Pada script diatas membutuhkan sebuah gambar sebagai background captcha (captcha.png) dan font huruf (font.ttf). Disini saya menggunakan gambar berformat .png karena gambar yang dihasilkan lebih baik dari format .jpg. Sehingga perintah yang digunakan untuk membuat gambar yaitu
imagecreatefrompng("captcha.png")
dan perintah untuk menampilkan gambar pada browser yaitu
imagepng($NewImage);
jika anda ingin menggunakan file .jpg maka gunakan perintah
imagecreatefromjpeg("captcha.jpg")
dan
imagejpeg($NewImage);
Font yang digunakan terserah anda tetapi disini saya menggunakan font Comic Sans MS, jika anda mengganti fontnya mungkin akan memerlukan beberapa penyesuaian untuk ukuran font dan peritah $text_x=rand(0,125); $text_y=rand(20,75); karena perintah tersebut digunakan untuk merandom koordinat huruf dan angka yang akan ditampilkan pada gambar captcha.
Script form memasukan dan mencocokan capcta: (form.php)

<?
session_start();
?>
<html>
<head>
<title>Demo Captcha </title>
</head>
<body onLoad="return focuson();">
<center>
<script type="text/javascript" language="javascript">
function focuson()
{document.form1.number.focus()}

function check()
{
if(document.form1.number.value=='')
{
alert("Mohon masukan kode pada gambar");
document.form1.number.focus();
return false;
}
}
</script>
<?
if(isset($_REQUEST['Submit']))
{
$key=$_SESSION['key'];
$number = $_REQUEST['number'];
if($number!=$key)
{echo"Kode yang anda masukan salah!";}
else
{echo"Kode yang anda masukan benar!";}
}
?>
<form name="form1" method="post" action="" onsubmit="return check();">
<img src="captcha_image.php" /><br>
<input name="number" type="text" id="number" />
<input name="Submit" type="submit" value="Submit" />
</form>
<?php
$random=md5(microtime());
$random=substr($random,0,5);
?>
</center>
</body>
</html>

Selesai..!!
Untuk melihat demo captha ini silahkan kunjungi: catment.co.cc/demo/captcha
Untuk mendownload file-file yang dibutuhkan silahkan: [DOWNLOAD]