Siapa yang tidak kesal dengan spam? Pasti Anda juga. Para spammer bukan hanya menyerang email, tapi juga situs-situs, termasuk Joomla. Nah, kali ini kita akan coba mengimplementasikan ReCapthca di situs Joomla kita. Recaptcha ini sepertinya lumayan ampuh untuk melindungi situs kita dari ulah para spammer.
Recaptcha adalah sebuah sistem antispam gratis. Data Oktober 2010 melaporkan terdapat 100 juta captcha dilakukan setiap hari untuk perlindungan pendaftaran situs jejaring sosial seperti facebook, twitter, StumbleUp dan yang lainnya. Saya rasa tak perlu menjelaskan panjang lebar tentang ReCaptcha ini, Anda bisa langsung buka di situsnya. Dan mendaftarnya sekaligus untuk mendapatkan Public Key dan Private Key untuk situs Anda. Jika anda memiliki beberapa domain, cukup mendaftar sekali saja dan pergunakan key yang sama. Cukup centang Enable this key on all domains (global key) pada saat pendaftaran.
Nah, untuk memperoleh manfaat sistem gratisan ini berikut tutorial singkat yang dapat anda manfaatkan di Joomla anda.
Ada dua cara untuk menginstal Recaptcha:
Berikut penjelasan singkat dari kedua cara di atas:
1. Menggunakan komponen AlphaRegistrationLihat hasilnya, jika semua berjalan normal maka form baru pendaftaran akan terlihat seperti contoh pada website ini.
2. Implementasi recaptchalib.php pada Joomla. Sumber: http://www.id-joomla.com/
Langkah pertama, Anda harus mendaftar dulu di recaptcha.net untuk memperoleh Public Key dan Private Key untuk situs Anda. Kemudian Anda download recaptchalib.php (pilih recaptchalib for php).
Agar reusable, kita akan letakkan file ini di folder public_html/includes. Untuk keamanan, file recaptchalib.php harus diedit terlebih dahulu dan ditambah baris pada bagian paling atas{defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );}
Kemudian buat sebuah class dalam file lain, misalnya recaptcha.php di folder ini juga. Isinya seperti berikut:
<?php
/** ensure this file is being included by a parent file */
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );
require_once( "recaptchalib.php" );
//Ganti key berikut dengan milik Anda
define ( "PUBLIC_KEY", "6LcHVQEAAAAAADXKCk48tWrV0_23dtPn0AR8dvfA" );
define ( "PRIVATE_KEY", "6LcHVQEAAAAAAD3QL5smD53vJ_G_mtwGonjzhZZL" );
class recaptcha {
function recaptcha(){
require_once ("recaptchalib.php");
}
function _setting($theme='red',$lang='en',$tabindex=0){
global $mainframe;
$html = "<script language=\"javascript\" type=\"text/javascript\">\n";
$html .= " var RecaptchaOptions = {theme : '$theme',lang : '$lang',tabindex : $tabindex};\n";
$html .= "</script>\n";
return $mainframe->addCustomHeadTag($html);
}
function get_html($err=null){
return recaptcha_get_html(PUBLIC_KEY,$err);
}
function validate (){
$resp = recaptcha_check_answer (PRIVATE_KEY,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
echo "<script> alert('The reCAPTCHA entered incorrectly. Go back and try it again. reCAPTCHA said: " . $resp->error . "'); window.history.go(-1); </script>\n";
exit();
}
}
}
?>
Berikutnya kita akan mencoba mengimplementasikan pada Komponen Registrasi Joomla. Jadi kita akan ubah file registration.php dan registration.html.php yang berada di public_html/components/com_registration
Edit registration.php
Ssetelah baris:require_once( $mainframe->getPath( 'front_html' ) );
tambahkan baris berikut:require_once( 'includes/recaptcha.php' );
$r = new recaptcha();
Cari function saveRegistration(), tambahkan global $r, sehingga barisglobal $database, $acl; menjadi global $database, $acl,$r;
masih dalam fungsi saveRegistration(), panggil fungsi validasi sebelum baris$row = new mosUser( $database ); sehingga menjadi
$r->validate();
$row = new mosUser( $database );
Pada file ini kita telah menambah 4 baris yaitu:
require_once( 'includes/recaptcha.php' );
$r = new recaptcha();
global $r;
$r->validate();
Edit registration.html.php
Cari fungsi registerForm(),tambahkan global $r; sebelum baris $validate = josSpoofValue();
Terus ke bawah, kita akan menambahkan field validasi recaptcha setelah password2
<tr>
<td>Verification Image *</td>
<td><?php echo $r->get_html();?></td>
</tr>
Selesai sudah. Pada file ini kita hanya menambahkan global $r; dan echo $r->get_html();
Selamat mencoba!!
COMMENTS
Posted On
%b %31, %2010Posted By
Abu AfifQuoting budy:
Wa'alaikumussal am warohmatulloh...
Yakinkan dulu semua lengkap Public key/private key udah dimasukkan belom?, enabled recapcha yes? Buat menu dari alparegistration?
Coba yakinkan... jika belum PM aja...
Posted On
%b %30, %2010Posted By
budyassalamualaikum wr.wb
mas gak muncul, saya pake cara yg 1 apa aja yg di centang mas..! bilsa perlu SSnya deh, maklum masih newbi
terimakasih
RSS