Membuat script anti spam sederhana dengan PHP
Anti spam adalah semacam kode verifikasi yang diberikan server kepada user atau pengunjung agar request dari user dapat ditindaklanjuti. Antispam biasanya terdapat pada proses registrasi accont pada suatu website seperti pembuatan email. Antispam biasanya terdapat juga pada bagian komentar dan polling dari sebuah webiste. Sesuai dengan namanya antispam bertujuan agar yang mengisi form komnetar atau yang membuat permintaan registrasi benar-benar orang yang berniat untuk itu. Karena bisa saja yang melakukan itu semua telah diprogram secara otomatis oleh orang-orang yang ingin berbuat jahat. Biasanya para spammer bertujuan untuk mengiklankan produk atau website mereka secara otomatis atau untuk membobol server dengan melakukan pemakaian bandwidth besar-besaran.
Untuk mengatasi perilaku spam, maka dibuatlahlah script antispam dengan menggunakan bahasa pemrograman web PHP. Sangat banyak sekarang variasi dari antispam yang kita lihat. Biasanya kode verifikasi yang kita inputkan berupa gabungan huruf dan angka yang bersifat case-sensitive. Ada juga yang terdiri dari kombinasi angka saja. Ada beberpa jenis antispam yang cukup menarik dengan menampilkan dua kata secara acak yang memiliki arti.
Berikut ini contoh sederhana program antispam yang memanfaatkan teknik session dan fungsi grafis yang tersedia pada PHP. Fungis session adalah untuk mencocokan kode verifikasi yang diberikan server dengan kode yang diterima dari user. Di lihat dari penulisan kode sessionnya contoh script di bawah jelas menggunakan program PHP versi 5. Terdapat dua buah file PHP: kode.php untuk menampilkan grafis gambar secara acak dan verifikasi.php untuk proses verfikasi kode yang dimasukkan
kode.php
<?
session_start();
$_SESSION[‘data_string’]=$_POST[‘data_string’];
// fungsi grafis pada PHP
$kanvas=imagecreate(200,50);
$putih=imagecolorallocate($kanvas,000,000,255);
$kuning=imagecolorallocate($kanvas,255,255,144);
// untuk membangkitkan string secara acak
srand((double)microtime()*1000000);
// enkripsi string baru sebanyak 32 karakter dengan kombinasi huruf dan angka kecil
$string=md5(rand(0,9999));
// karakter acak yang diambil dimulai dari karakter ke-15 sebanyak 5 digit
$data_string=substr($string,15,5);
// menampilkan kode acak di atas gambar
imagefill($kanvas,4,10,$kuning);
imagestring($kanvas,20,50,21,$data_string,$putih);
imagepng($kanvas,”verify.png”);
imagedestroy($kanvas);
echo “Untuk kevalidan data, ketikkan kode yang anda lihat pd gambar di bawah(case sensitive)<br><br>
<img src=\”verify.png\”><br><br>
<form action=verifikasi.php method=post>
<input type=text name=kode>
<input type=submit value=Go name=verify>
</form>”;
?>
verifikasi.php
<?
session_start();
$data_string=$_SESSION[‘data_string’];
// fungsi trim untuk menghapus spasi di kanan-kiri tulisan
$kode=trim($_POST[‘kode’]);
if($data_string==$kode){
echo “verifikasi sukses”;
}
if($data_string!==$kode){
echo “Maaf, kode yang dimasukkan salah”;
}
?>
Demikian cara pembuatan kode verifikasi antispam sederhana semoga bermanfaat
d68678
kenapa adawarni kalo saya jalankan script diatas?
warningnya kayak gini :
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0;
apanya yang salah ?
mohon penjelasan
Mas nya pake php versi berapa ya? Script di atas, di testnya persis spti d atas atau tlh disisipkan ke kode lain?
waaahhhhh script nya bagus juga nih boleh saya guna kan untuk blog saya…^_^
terima kasih infonya, silakan mampir yaa ke sini dan jika mau artikel menarik lainnya silakan berkunjung ke sini yaaa…
mas ridho koq ada warning “Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at C:\AppServ\www\testantispam\index.php:9) in C:\AppServ\www\testantispam\index.php on line 10”
knp yah??
scriptnya mah jalan cma ada warning aja..
blz ke email aja..
bisa jalan kok, kode verifikasi pd blog ini pake yg script di atas.
biasanya masalah seperti di atas muncul karena salah urutan dalam penempatan fungsi2 php. sepertinya mas rizki memakai kode header(location:…) dan kode ini harus diletakan paling atas
kenapa gag mau?
gambar verifikasi nya pecah gitu.
apa yang salah yach?
dari semua kode yang aku coba.
pecah semua gambarnya..TT
Great post, I conceive blog owners should larn a lot from this weblog its rattling user pleasant. So much wonderful info on here :D.