Sunday, March 27, 2011

Membuat CAPTCHA - Membedakan mesin atau manusia

Tutorial kali ini cocok banget buat yang lagi belajar bahas permrograman PHP.
Yups.. Langsung aja pada inti permasalahannya,,
Apa itu Captcha?
pasti banyak orang yang tanya kecuali para webmaster..
Captcha adalah sejumlah kata acak yang digunakan untuk mengecek apakah seorang manusia atau robot.. yah biasanya ada di form registrasi dan lainnya.
Cara membuat captcha kali ini ialah dengan membuat 3 file PHP.
1. index.php


<!--
 .judul { text-align: center; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 24px; font-weight: bold; color:#FF0000; } .table { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; } .bintang { color:#FF0000; } .style1 {color: #FF0000; font-weight: bold; } .style5 { font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; color: #000000; }-->
 
Form Pendaftaran via Email<form action="send.php" method="post"><strong>FORM PENDAFTARAN</strong>
<table class="table" border="1" cellspacing="0" cellpadding="3" width="61%">
<tbody>
<tr>
<td width="56%">
<div>
<strong>Nama Lengkap<span class="bintang">*</span></strong></div></td>
<td width="44%"><input id="txtNama" name="txtNama" type="text" /></td>
</tr>
<tr>
<td>
<div>
<strong>Nomor KTP/SIM/Paspor/Kartu Pelajar<span class="bintang">*</span>
</strong></div></td>
<td><input id="txtKTP" name="txtKTP" type="text" /></td>
</tr>
<tr>
<td>
<div><strong>Tempat Lahir<span class="bintang">*</span></strong></div></td>
<td>
 
<input id="txtLahir" name="txtLahir" type="text" /></td>
</tr>
<tr>
<td>
<div><strong>Tanggal Lahir<span class="bintang">*</span> </strong></div></td>
<td>
<select id="lsttgl" class="inputstyle" name="lsttgl">
<!--
for(i=1;i<=31;i++) {
if(i==1) {
document.write('<option value="' + i + '" selected>' + i + '</option>')
} else {
document.write('<option value="' + i + '">' + i + '</option>')
}
}
// -->
</select>
 
-
<select id="lstbln" class="inputstyle" name="lstbln">
<option selected="selected" value="1">Januari</option>
<option value="2">Februari</option>
<option value="3">Maret</option>
<option value="4">April</option>
<option value="5">Mei</option>
<option value="6">Juni</option>
<option value="7">Juli</option>
<option value="8">Agustus</option>
<option value="9">September</option>
<option value="10">Oktober</option>
<option value="11">November</option>
<option value="12">Desember</option>
</select>
 
-
<select id="lstthn" class="inputstyle" name="lstthn">
<!--
for(i=1950;i<=2007;i++) {
if(i==1975) {
document.write('<option value="' + i + '" selected>' + i + '</option>')
} else {
document.write('<option value="' + i + '">' + i + '</option>')
}
}
// -->
</select></td>
</tr>
<tr>
<td>
<div><strong>Alamat<span class="bintang">*</span>
</strong></div></td>
<td><textarea id="txtAlamat" name="txtAlamat"></textarea></td>
</tr>
<tr>
<td>
<div>
<strong>Nomor Telepon atau Handphone yang bisa dihubungi<span class="bintang">*</span> </strong></div></td>
<td><input id="txtHP" name="txtHP" type="text" /></td>
</tr>
<tr>
<td>
<div><strong>Masukkan jumlah hasil penjumlahan dari gambar<span class="”bintang”">*</span></strong><span class="”bintang”">
 
<img src="”captcha.php”/" alt="" /></span></div></td>
<td>
<input name="”ccek”" type="”text”/" /></td>
</tr>
<tr>
<td>
<div><strong>Keterangan Tambahan</strong></div></td>
<td><textarea id="”txtKeterangan”" name="”txtKeterangan”"></textarea></td>
</tr>
<tr>
<td>
<div><span class="”style1″">*semua field  harus diisi</span></div></td>
<td><input name="”cek”" type="”submit”" value="”Kirim”/" /></td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
<tr>
<td colspan="2">
 
<strong>Tolong masukkan data secara benar dan valid, semua field harus diisi !</strong></td>
</tr>
</tbody></table>
</form>
 
2. captcha.php
 
<?php
session_start();
$gbr = "img.jpg";
$merah = "255";
$ijo = "255";
$biru = "255";
$acak1 = mt_rand(1,100); // nilai acak 1
$acak2 = mt_rand(1,100); // nilai acak 2
$strtampil = $acak1." + ".$acak2;
$hasil = $acak1 + $acak2;
$bikingbr =imagecreatefromjpeg($gbr);
$teks = imagecolorallocate($bikingbr, $merah, $ijo, $biru);
imagestring($bikingbr, 5, 20, 10, $strtampil, $teks);
$_SESSION['capcay'] = $hasil;
header("Content-type: image/jpeg");
imagejpeg($bikingbr);
?>
 
3. send.php
 
<?php
session_start();
$to = "email-kamu@domain-kamu.com";
$subject = "Isikan subjectnya disini";
$txtNama = $_POST['txtNama'] ;
$txtKTP = $_POST['txtKTP'];
$txtLahir = $_POST['txtLahir'];
$tgl = $_POST['lsttgl'];
$bln = $_POST['lstbln'];
$thn = $_POST['lstthn'];
$txtAlamat = $_POST['txtAlamat'];
$txtHP = $_POST['txtHP'];
$txtKeterangan = $_POST['txtKeterangan'];
$cek = $_POST['ccek'];
$message = "Nama: ".$txtNama."<br>KTP: ".$txtKTP."<br>Tempat Lahir: ".$txtLahir.
"<br>Tanggal Lahir: ".$tgl."-".$bln."-".$thn."<br>Alamat:
".$txtAlamat."<br>HP: ".$txtHP."<br>Keterangan: ".$txtKeterangan; if($txtNama == "" || $txtHP == "" ||$txtAlamat == "" || $txtKTP == "" || $txtLahir == "" ) {
header("location:index.php?err=1");
exit;
}
if($_POST['ccek'] != $_SESSION['capcay']){
header("location:index.php?err=1");
exit;
}
if((bln==4||bln==6||bln==9||bln==11)&&tgl>30) {
header("location:index.php?err=1");
exit;
} else if((bln==2) && tgl>29) {
header("location:index.php?err=1");
exit;
} else if((bln==2) && (thn%4!=0) && (tgl>28)) {
header("location:index.php?err=1");
exit;
} else if((bln==2) && (thn%4==0) && (tgl>29)) {
header("location:index.php?err=1");
exit;
}
$sent = mail($to, $subject, $message) ;
if($sent)
{print "Terima kasih, Data Anda sudah terregistrasi dengan sukses, silahkan tutup halaman ini"; }
else
{print "Registrasi gagal, Silahkan ulangi kembali"; }
?>  
 
4. img.jpg
Anda dipersilahkan untuk membuat sendiri file tersebut tetapi jangan sampai lupa nama dan formatnya harus sesuai seperti diatas.
Selesai. 
Di Tunggu komentar nya 

0 comments:

Post a Comment

luvne.com resepkuekeringku.com desainrumahnya.com yayasanbabysitterku.com

Lalu Lintas

pagerank