Pertama di Indonesia: "Murottal Al Qur'an + Terjemahan" dalam bentuk CD MP3 Original (Coba dulu FREE)
Dapatkan Script SMS Gateway PHP + MySQL

Seperti: software pengirim SMS massal, SMS survei, SMS polling, SMS quick count, SMS dakwah, Web2SMS dan masih banyak lagi... semuanya berbasis PHP & MySQL
[Info Lengkap...]



Ide Membuat Buku Tamu dengan Automatic Filtering


April 19th, 2009 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Salah satu teman sekaligus member saya (mas yoyok) sedang dipusingkan dengan buku tamunya yang sering kemasukan komentar-komentar spam. Meskipun sudah dilengkapi dengan captcha, tapi masih saja spam itu bisa masuk ke buku tamu. Aduh… cape deh..

Untuk mencegah spam masuk ke dalam buku tamu, ada beberapa teknik yang bisa digunakan. Teknik pertama adalah menggunakan captcha yaitu user sebelum mensubmit komentar buku tamu terlebih dahulu harus mengisi semacam kode yang tertera di halaman tersebut. Biasanya kode ini bersifat random. Teknik penggunaan captcha ini bertujuan untuk memverifikasi apakah pengisi buku tamu merupakan mesin spam ataukah manusia sejati. Anda dapat membaca teknik ini di artikel saya yang lain.

Teknik kedua untuk mencegah spam masuk, yaitu menggunakan filtering. Biasanya, spam-spam nakal berisi komentar yang di dalamnya terdapat hal-hal yang berbau ’sex’, ‘xxx’, ‘porn’ atau link-link tertentu. Bisa juga teknik automatic filtering ini mencegah buku tamu dari komentar-komentar yang berbau tidak sopan dalam hal ini yang dikirim oleh manusia. Nah.. dengan teknik filtering ini, bila komentar terdapat salah satu atau beberapa kata-kata tersebut maka secara otomatis langsung direject atau ditolak (tidak tersimpan di database).

Anda dapat menggunakan salah satu teknik di atas atau bahkan menggabungkannya menjadi kesatuan. Dengan digabungkannya kedua teknik tersebut, maka diharapkan buku tamu Anda akan lebih terproteksi dari spammer.

Nah.. pada artikel ini khusus akan dibahas bagaimana ide untuk membuat buku tamu dengan automatic filtering.

Pembahasan kita mulai dari membuat struktur tabel untuk menyimpan data buku tamu terlebih dahulu.

CREATE TABLE guestbook (
  id int(11) AUTO_INCREMENT,
  nama varchar(20),
  email varchar(20),
  tanggal date,
  komentar text,
  PRIMARY KEY  (id)
)

Field ‘id’ digunakan untuk pembeda antar entri buku tamu. Field ini akan bermanfaat bila Anda memberikan fitur untuk mengedit komentar buku tamu yang masuk, atau fitur untuk menghapus komenter. Pengeditan dan penghapusan komentar tersebut berdasarkan ID komentar. Untuk mudahnya, ID komentar ini kita buat menggunakan auto increment.

Field ‘nama’ nantinya akan diisi oleh nama pengisi buku tamu. Field ‘email’ terkait dengan alamat email pengisi. Dalam buku tamu nanti akan disimpan pula tanggal pengisian komentar.

Nah… selanjutnya kita buat form isian buku tamu

guestbook.htm

<h1>Guest Book</h1>
<form method="post" action="submit.php">
<table border="0">
  <tr><td>Nama Anda</td><td>:</td><td><input type="text" name="nama" /></td></tr>
  <tr><td>Email Anda</td><td>:</td><td><input type="text" name="email" /></td></tr>
  <tr><td>Komentar</td><td>:</td><td><textarea name="komentar"></textarea></td></tr>
  <tr><td></td><td></td><td><input type="submit" name="submit" value="Submit" /><input type="reset" name="reset" value="Reset" /></td></tr>  
</table>
</form>

Keterangan:
untuk field tanggal, nantinya akan digenerate secara otomatis oleh function yang akan membaca tanggal saat pengisian komentar (recent date).

Form telah dibuat, selanjutnya kita buat script untuk memproses isian buku tamu.

Mmm.. sebelum kita mulai membuat scriptnya, terlebih dahulu harus kita buat konsep dalam pemrosesan isian buku tamu ini.

Hal pertama yang harus kita pikirkan adalah, bagaimana supaya user tidak bisa menuliskan data isian buku tamu menggunakan tag HTML. Lho mengapa demikian? Ya.. karena terkadang ada user nakal yang sengaja menyisipkan tag-tag HTML untuk membuat suasana buku tamu menjadi rusak. Untuk itu, kita harus pikirkan bagaimana supaya bila user menyisipkan tag HTML, tag tersebut tidak terbaca atau tersimpan.

OK.. untuk mewujudkan hal di atas, solusinya adalah kita gunakan function strip_tags(). Function ini akan menghilangkan semua tag HTML dari suatu string yang di dalamnya terdapat tag HTML. Function ini nanti akan kita berikan pada setiap string yang diisikan user baik nama, email maupun komentar.

Selanjutnya kita pikirkan tentang filtering bad wordsnya. Untuk mengimplementasikan hal ini, terlebih dahulu kita buat daftar bad words nya. Daftar ini bisa kita nyatakan dalam bentuk array. Nah… selanjutnya, untuk setiap kata dalam array bad words tersebut kita cek keberadaannya dalam komentar. Bila komentar terdapat minimal sebuah bad word, maka isian buku tamu langsung ditolak.

Mungkin yang menjadi pertanyaan di benak Anda adalah, bagaimana caranya mengecek ada tidaknya sebuah bad word dalam komentar? Hmm… mudah saja kawan. Caranya dengan menggunakan function strpos().

Secara umum function strpos() ini digunakan untuk mengecek keberadaan suatu substring dalam string. Bila subtring tersebut tidak terdapat dalam string, maka akan menghasilkan nilai FALSE.

Trus… bagaimana cara mengimplementasikan strpos() ini terhadap proses filteringnya? OK.. konsepnya adalah, pertama kita asumsikan terlebih dahulu bahwa status komentarnya adalah bersih alias ‘tidak mengandung bad words’.

Selanjutnya kita cek satu-persatu untuk setiap kata dalam daftar bad words yang terletak dalam array. Apabila ditemukan sebuah bad word dalam komentar, maka status komentarnya menjadi ‘ada bad word’. Karena telah ditemukan sebuah bad word dalam komentar, maka boleh kita hentikan proses pencariannya untuk bad word yang lain. Kalaupun dilanjutkan juga tidak apa-apa.

Nah… setelah terindikasi bahwa komentar mengandung bad word, maka data isian tersebut tidak kita simpan ke database.

OK.. we’ve got it… konsep dan ide sudah dapat, sekarang mulai buat scriptnya.

submit.php

<?php
 
// daftar bad words
 
$badWords = array("sex","xxx","viagra","http","porn");
 
// membaca isian buku tamu dengan strip_tags()
 
$namaPengisi = strip_tags($_POST['nama']);
$emailPengisi = strip_tags($_POST['email']);
$isi = strip_tags($_POST['komentar']);
 
// membaca tanggal ketika pengisian
 
$tanggal = date("Y-m-d");
 
// asumsikan komentarnya tidak mengandung bad word
 
$status = "tak ada";
 
// cek keberadaan setiap bad word dalam komentar
 
for($i = 0; $i <= count($badWords)-1; $i++)
{
   if (!(strpos($isi, $badWords[$i]) == false))
   {
      // jika ditemukan sebuah bad word dalam komentar, maka status menjadi 'ada'
      // proses looping langsung dihentikan
 
      $status = "ada";
      break;
   }
}
 
// cek status akhir
// bila status bad word tidak ada, maka data isian tersimpan ke database
// bila ada, maka direject
 
if ($status == "tak ada")
{
   mysql_connect("localhost", "root", "root");
   mysql_select_db("contoh");
   $query = "INSERT INTO guestbook(nama, email, tanggal, komentar)
             VALUES ('$namaPengisi', '$emailPengisi', '$tanggal', '$isi')";
   $hasil = mysql_query($query);
 
   if ($hasil) echo "Terimakasih telah mengisi buku tamu";
   else echo "Pengisian buku tamu gagal";
}
else
{
   echo "Maaf komentar Anda mengandung kata-kata yang tidak sopan";
}
 
?>

Gimana mudah bukan membuatnya? Nah… silakan script di atas dikembangkan sendiri ya. Bisa Anda gabung dengan teknik captcha atau menggunakan sistem moderasi sebelum isian buku tamu ditampilkan/dipublish.

Selamat mencoba…


Beberapa artikel terkait


Share this article on:

Kata kunci: filtering - guestbook - spam -


Ada 29 komentar dalam artikel ini.

  1. Sukarno says:

    Terima kasih mas, atas informasinya yang sangat berarti bagi saya. sekali lagi terima kasih.

  2. farid says:

    Mas artikelnya bagus, sedikitpun tidak ada hal disembunyiin, kalo setiap master ky gini semua orang-orang indonesia cepet maju mas, mudah2an kakinya mas sudah ada di surga.
    Mas minta tolong sy lg bikin blog guru, cuman mentok mas, dimana sy pengen ada postingan daftar nilai tinggal ketik nama langsung muncul nilainya, di blog ga bisa ya mas seperti itu? mohon bantuan dan bimbingannya, kalo ada artikel semacam itu mohon dikirim ya mas, atur nuhun

  3. rosihanari says:

    to farid: amin… yaa robbal alamin… blog Anda di mana mas farid? kalo di wordpress.com atau blogspot.com itu tidak bisa dibuat form sendiri karena untuk membuat form dan script processingnya harus kita upload ke server atau utak-atik scriptnya. Tapi kalo blog Anda di self hosting, hal tsb bisa dilakukan.

  4. Ridwan (alumni murid pak arie nih) says:

    pak maaf saya ga tahu harus ngirim komentar dimana di situs ini. gini kan dulu pernah ada postingan agar status YM kita bisa keliatan pas online atau off kalo ga salah pake scrip gini.


    Nah berarti kita secara tidak langsung conec ke yahoo dong. apakh itu legal bila scrip ini digunakan di web resmi. dan memperlambat proses pembukaan web kita dong bila scrip ini dipasag

  5. rosihanari says:

    to ridwan: iya dengan script tsb maka langsung terhubung ke server Yahoo, demikian pula image yang menunjukkan status online atau offlinenya. Kalau menurut saya script itu legal dan begitu pula imagenya. Dalam TOS YM http://info.yahoo.com/legal/us/yahoo/messenger/messengertos/messengertos-279.html tidak disebutkan larangan dalam menyisipkan image status yang tersambung ke server Yahoo ke dalam web kita.

  6. Ridwan (alumni murid pak arie nih) says:

    pak gimana sih cara bikin ato nampilin berita yang ada imagenya. trus posisinya kaya artikel bapak diatas. Jadi gambar disebelah kiri trus beritanya disebelah kanan. diterusin dibawahnya. kaya berita diatas itu lho yang ada gambar x nya. di artikel membuat “buku tamu dengan auto filtering. maksh”

  7. rosihanari says:

    to ridwan: ya gunakan atribut align=”..” saja pada <img src=”..”> contoh:

    <img src=”…” align=”left”>
    <p>ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. ini adalah paragraf. </p>

    Tag <img src=”…” align=”left”> digunakan untuk menempatkan image di sebelah kiri dari paragraf.

  8. abdul says:

    mas, saya sedang belajar php. yang sedang saya pelajari adalah script tentang pencarian, tp saya selalu gagal mencoba nya. mas bisa kasih contoh tentang script pencarian yang lebih banyal lagi ga! trima kasih.

  9. teguh says:

    Assalamu’alaikum……..
    mas,bgmn mnmplkn komntar dibuku tamu??
    trs bgmn code memoderasi guest book??
    sblmnya trmksh,sukses buat mas rosihanari



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
Untuk membuktikan bahwa komentar Anda bukan spam, tulis kata yang muncul dalam gambar di bawah ini. Bila Anda tidak bisa membaca kata dalam gambar, klik pada gambar tersebut untuk mendengarkan suara dari kata tersebut
Click to hear an audio file of the anti-spam word