Melindungi form dari serangan worm dengan Captca
Seringkali sebuah form diisi secara otomatis oleh worm sehigga banyak sekali data – data yang tidak kita kehendaki. untuk memecahkan masalah tersebut, kita harus memastikan bahwa yang mengisi form adalah benar – benar user/manusia bukan worm atau program sejenisnya. Untuk melakukan hal tersebut, dapat dilakukan dengan metode captca. Captca adalah menggenerate sebuah image yang dituliskan kode acak yang dimana, kode tersebut harus dimasukkan oleh user. berikut ini adalah kode nya :
getimage.php
session_start();
function generate_captcha()
{
$char = strtoupper(substr(str_shuffle('abcdefghjkmnpqrstuvwxyz'), 0, 4));
$captcha_code = rand(1, 9) . rand(1, 9) . $char;
header('Content-type: image/png');
header('Cache-control: no-cache');
$image = @imagecreate(155, 45) or die("Cannot Initialize new GD image stream");
$background_color = imagecolorallocate($image, 255, 255, 255);
$color = imagecolorallocate($image, rand(150, 50), rand(145, 120), rand(200, 155));
$font = 'verdana.ttf';
$rotate = rand(-8, 8);
imagettftext($image, 18, $rotate, 20, 35, $color, $font, $captcha_code);
for ($i=1; $i <=10; $i++){
imageline($image, 0, $i*rand(8, 10), 155, $i*rand(10, 8), $color);
imageline($image, $i*rand(16, 18), 0, $i*rand(14, 16), 45, $color);
}
imagerectangle($image,0,0,154,44,$color);
imagejpeg($image);
ImageDestroy($image);
$_SESSION["captcha_code"] = $captcha_code;
}
generate_captcha();
kemudian untuk formnya, dapat dibuat seperti dibawah ini.
<?php
if (isset($_POST[’submitform’])){
session_start();
if (strtolower($_POST[’securitykey’]) === strtolower($_SESSION[’captcha_code’])) echo “Success: Captcha verified!”;
else echo “Error: Captcha not verified!”;
} else {
?>
<form id=”form1? name=”form1? method=”post” action=””>
<table width=”287? border=”0?>
<tr>
<td width=”54?>Name:</td>
<td width=”217?><input type=”text” name=”textfield” /></td>
</tr>
<tr>
<td>Address:</td>
<td><input type=”text” name=”textfield2? /></td>
</tr>
<tr>
<td colspan=”2?> </td>
</tr>
<tr>
<td>Secutiry image: </td>
<td><img src=”getimage.php?<?php echo time(); ?>” alt=”” name=”captcha” width=”155? height=”45? id=”captcha” /><br />
<a href=”javascript:void(0);” onclick=”document.images[’captcha’].src =’getimage.php’+ ‘?’ + (new Date()).getTime();”>Reload Captcha</a> <br />
<input name=”securitykey” type=”text” id=”key” /></td>
</tr>
<tr>
<td colspan=”2?> </td>
</tr>
<tr>
<td> </td>
<td><label>
<input name=”submitform” type=”submit” id=”submitform” value=”Submit” />
</label></td>
</tr>
</table>
</form>
<?php
}
?>Semoga bermanfaat…