Tuesday, April 22, 2014
Captcha
Apakah kamu sekarang bertanya-tanya apa itu captcha?
Sungguh sangat mustahil pengguna internet 2014 tidak mengenal yang namanya captcha.
Tapi, mungkin saja sih ada yang belum tau. hikz.

Buat yang belum tau.
Captcha adalah sebuah syarat yang harus dimasukan/diketik oleh user ketika melakukan registrasi pada sebuah web (*biasanya). Dengan tujuan agar pengguna yang tidak di inginkan atau robot tidak dengan mudah merayapi sistem.
 Nah. sudah tau kan.
Buat kamu yang pengen tau cara membuatnya dengan PHP yuk simak lebih dalam. (*lebih dalam, tidurlah hikz).
Pertama kamu buat dulu file PHP dengan nama captcha.php (*tidak haru sama)
Buat session dan set konten header menjadi bentuk gambar/image
<?php
session_start();
header('Content-type: image/png');

?>
Buat sebuah fungsi yang akan meng acak/random text, angka, dan simbol untuk dijadikan captcha.
function random($min,$max){  //fungsi random text
  $acak="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&*+=:.?";
  $length=mt_rand($min,$max);
  $random=str_shuffle($acak);
  $random=substr($random,0,$length);
  return $random;
}
function ranFont(){ //fungsi random font
  $rand=mt_rand(1,4);
  switch ($rand){
    case 1: $rand='fonts/alger.ttf';
 break;
 case 2: $rand='fonts/arial.ttf';
 break;
 case 3: $rand='fonts/showg.ttf';
 break;
 case 4: $rand='fonts/snap.ttf';
  }
  return $rand;
}
function ranCol($image){  //fungsi random color,,, wkwkwk warna random
  $image=imagecolorallocate($image,mt_rand(0,1000),mt_rand(0,1000),mt_rand(0,1000));
  return $image;
}
Fungsi random() diatas bertugas meng acak bahan yang akan dijadikan captcha
ranFont() akan mengacak jenis font dan sedangkan ranCol() yang akan meng acak warna.
FAHAM ?
oke lanjut.
Tambahkan perintah berikut dibawah fungsi tadi
<?php
$random=random(2,4);  //random teks bagian satu
$random2=random(1,2);  //bagian dua
$random3=random(0,2);  //bagian tiga
$allrandom=$random.$random2.$random3;
$allrandom=strtolower($allrandom); //menjadi huruf lower *tidak peka huruf besar/kecil
$_SESSION['captcha']=str_replace(" ","",$allrandom);  //masukan hasil random ke session;
$size=array("width"=>200,"height"=>60); //Tentukan ukuran gambar
$image = imagecreatetruecolor($size['width'], $size['height']); //Buat gambar dengan ukuran yang telah ditetapkan 160x60
imagesavealpha($image , true);  //jadikan gambar alpha "transparan mungkin.. soalnya kalo di set ke false, background menjadi hitam #secara default false
$transparent_colour = imagecolorallocatealpha($image , 0, 0, 0, 127); //Jadikan gambar transparan, jangan diubah lagi
imagefill($image , 0, 0, $transparent_colour); //Buat background gambar menjadi tranparan
imagettftext($image, mt_rand(20,40), 0, 10, 40, ranCol($image), ranFont(), $random); //Masukan text yang telah dirandom
imagettftext($image, mt_rand(20,30), mt_rand(-20,20), 100, 40, ranCol($image), ranFont(), $random2);
imagettftext($image, mt_rand(25,35), mt_rand(-50,50), 140, 40, ranCol($image), ranFont(), $random3);
imagepng($image); //Gambar berupa png
imagedestroy($image); //Selesai deh... yang ini kurang begitu paham apa fungsinya.. gak disertakan juga gak ada perubahan wkwkwkwkwk (mungkin sebagai penutup)
?>
Selesai dan save.
Coba buka hasil kerja kamu tadi di browser.
Error?
Pastinya.. karena kamu belum mendownload font nya
Extract bersama file captcha.php yang tadi kamu buat.
Lihat kode penuh
<?php
############################################
####  Deri Herdiano                     ####
####  derryherdianto@gmail.com          ####
####  Captcha oleh deri herdianto v1.0  ####
############################################
session_start();
header('Content-type: image/png');
function random($min,$max){  //fungsi random text
  $acak="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%&*+=:.?";
  $length=mt_rand($min,$max);
  $random=str_shuffle($acak);
  $random=substr($random,0,$length);
  return $random;
}
function ranFont(){ //fungsi random font
  $rand=mt_rand(1,4);
  switch ($rand){
    case 1: $rand='fonts/alger.ttf';
 break;
 case 2: $rand='fonts/arial.ttf';
 break;
 case 3: $rand='fonts/showg.ttf';
 break;
 case 4: $rand='fonts/snap.ttf';
  }
  return $rand;
}
function ranCol($image){  //fungsi random color,,, wkwkwk warna random
  $image=imagecolorallocate($image,mt_rand(0,1000),mt_rand(0,1000),mt_rand(0,1000));
  return $image;
}
$random=random(2,4);  //random teks bagian satu
$random2=random(1,2);  //bagian dua
$random3=random(0,2);  //bagian tiga
$allrandom=$random.$random2.$random3;
$allrandom=strtolower($allrandom); //menjadi huruf lower *tidak peka huruf besar/kecil
$_SESSION['captcha']=str_replace(" ","",$allrandom);  //masukan hasil random ke session;
$size=array("width"=>200,"height"=>60); //Tentukan ukuran gambar
$image = imagecreatetruecolor($size['width'], $size['height']); //Buat gambar dengan ukuran yang telah ditetapkan 160x60
imagesavealpha($image , true);  //jadikan gambar alpha "transparan mungkin.. soalnya kalo di set ke false, background menjadi hitam #secara default false
$transparent_colour = imagecolorallocatealpha($image , 0, 0, 0, 127); //Jadikan gambar transparan, jangan diubah lagi
imagefill($image , 0, 0, $transparent_colour); //Buat background gambar menjadi tranparan
imagettftext($image, mt_rand(20,40), 0, 10, 40, ranCol($image), ranFont(), $random); //Masukan text yang telah dirandom
imagettftext($image, mt_rand(20,30), mt_rand(-20,20), 100, 40, ranCol($image), ranFont(), $random2);
imagettftext($image, mt_rand(25,35), mt_rand(-50,50), 140, 40, ranCol($image), ranFont(), $random3);
imagepng($image); //Gambar berupa png
imagedestroy($image); //Selesai deh... yang ini kurang begitu paham apa fungsinya.. gak disertakan juga gak ada perubahan wkwkwkwkwk (mungkin sebagai penutup)
Untuk memanggil captcha sama seperti memanggil gambar pada umumnya
<html>
<head></head>
<body>
<img src="captcha.php" />
</body>
</html>
Untuk penggunaanya dikombinasikan dengan fungsi session.
Text captcha asli akan disimpan dalam session $_SESSION['captcha'].

Semoga artkel ini bermanfaat.
Terimakasih.

Post a Comment

Harap berkomentar dengan sopan ;)

Donate

Fans

Followers

Powered by Blogger.
Copyright 2014 | TampungInfo | Blogger.com