Sekarang metode / cara anti auto submitter atau istilah lainnya humanity code atau ada pula
yang menyebutnya Spam preventer telah digunakan dimana-mana sebagai tindakan pengamanan
pengisian form dari program otomatis yang dibuat untuk mengumpulkan data
secara otomatis pula.
Istilah ini mungkin terasa asing di telinga anda, tetapi saya yakin metode / cara ini sudah sering anda
temukan dimana-mana.
Misalnya saat anda :
1. membuat / membuka account email baru
2. mengisi komentar di guestbook website orang lain
3. mengirimkan komentar di webblog tertentu
4. mengisi berulang-ulang komentar di shoutbox tertentu
5. mendownload program gratisan
6. melakukan register di forum-forum diskusi , milis
7. menggunakan jasa-jasa gratis seperti mengirimkan SMS,Live Chat,Instant Messaging
8. dan lain-lain.
Biasanya tampilannya berupa, Input Code Shown Below dan dibawahnya
terdapat perpaduan angka-angka dan abjad yang telah diacak dengan format gambar (miring ke kanan-miring ke kiri).
Jika anda tertarik, mari ikuti program sederhana yang saya tuliskan di artikel kali ini, yang ditulis dengan php,
jadi anda bisa mencoba menjalankannya di localhost server anda atau hosting gratis yang mendukung server script php,
dengan library gambar juga terinstall di dalamnya (pada dasarnya semuanya sudah di setting default):
Program ini terbagi menjadi 2 file yang dihubungkan dengan sebuah “session”.
1. File yang satu bertugas melakukan pengacakan / randomizing angka, kemudian angka tersebut
dikirimkan kepada browser menjadi format gambar (saya namakan ANTISPAM.PHP).
2. File yang lainnya bertugas mengumpulkan informasi data yang diisi oleh user, kemudian
data tersebut dicocokkan dengan HASIL PENGACAKAN yang dilakukan file pertama diatas (baca: ANTISPAM.PHP).
Untuk mengerti jalan / alur program ini, setidaknya anda mempunyai basic pemograman php (atau yang lainnya, php sangat mudah dipelajari)
dan setidaknya anda mengerti header-header protokol HTTP / 1.1.
untuk mempelajari protokol HTTP, anda bisa mengunjungi :
http://www.faqs.org/rfcs/rfc2616.html
Jika anda sudah menguasai protokol tersebut dan anda mengerti bahasa programming, anda pasti dapat membuat program web server
walaupun saya ragu akan menandingi Apache,IIS,dll.
Berikut source code 2 file tersebut yang saya selipi baris-baris komentar sehingga anda mengerti apa fungsi-fungsi tiap “function” yang ada :
1. File ANTISPAM.PHP
// SESSION HARUS DIAKTIFKAN UNTUK BERKOMUNIKASI DENGAN FILE LAIN
session_start(); // MENCARI NOMOR ACAK UNTUK MENDAPATKAN 5 DIGIT ANGKA
$rand = rand(10000, 99999);
// MENDAPATKAN ANGKA YANG TELAH DI RANDOM DAN DI HASHING, LALU DISIMPAN KE DALAM SESSION
// NANTINYA SESSION INI AKAN DIKIRIMKAN KE FILE LAIN UNTUK VERIFIKASI
// INI MERUPAKAN BAGIAN PALING PENTING
$_SESSION['image_random_value'] = md5($rand);
// SIAP-SIAP MEMBUAT GAMBAR
$image = imagecreate(60, 30);
// MEMBUAT LATAR BELAKANG GAMBAR BERWARNA PUTIH
$bgColor = imagecolorallocate ($image, 255, 255, 255);
// the text color is black
$textColor = imagecolorallocate ($image, 0, 0, 0);
// MELETAKKAN ANGKA TADI KE DALAM FORMAT GAMBAR
imagestring ($image, 5, 5, 8, $rand, $textColor);
// === BAGIAN HEADER HTTP ==
// SELALU MEMBUAT MASA BERLAKU SESSION HABIS
header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);
// HTTP/1.1
header(“Cache-Control: no-store, no-cache, must-revalidate”);
header(“Cache-Control: post-check=0, pre-check=0″, false);
// TIDAK BOLEH DISIMPAN KE CACHE
header(“Pragma: no-cache”);
// MEMBERITAHUKAN KEPADA BROWSER, BAHWA INI MERUPAKAN FILE GAMBAR
header(‘Content-type: image/jpeg’);
// === END OF HEADER HTTP ==
// === BACA DI RFC 2616 —> http://www.faqs.org/rfcs/rfc2616.html
// === MEMBUAT GAMBAR KE BROWSER ==
imagejpeg($image);
// MEMBEBASKAN IMAGE DARI MEMORI ..
imagedestroy($image);
?>
2. FILE INDEX.PHPsession_start(); // MENCARI NOMOR ACAK UNTUK MENDAPATKAN 5 DIGIT ANGKA
$rand = rand(10000, 99999);
// MENDAPATKAN ANGKA YANG TELAH DI RANDOM DAN DI HASHING, LALU DISIMPAN KE DALAM SESSION
// NANTINYA SESSION INI AKAN DIKIRIMKAN KE FILE LAIN UNTUK VERIFIKASI
// INI MERUPAKAN BAGIAN PALING PENTING
$_SESSION['image_random_value'] = md5($rand);
// SIAP-SIAP MEMBUAT GAMBAR
$image = imagecreate(60, 30);
// MEMBUAT LATAR BELAKANG GAMBAR BERWARNA PUTIH
$bgColor = imagecolorallocate ($image, 255, 255, 255);
// the text color is black
$textColor = imagecolorallocate ($image, 0, 0, 0);
// MELETAKKAN ANGKA TADI KE DALAM FORMAT GAMBAR
imagestring ($image, 5, 5, 8, $rand, $textColor);
// === BAGIAN HEADER HTTP ==
// SELALU MEMBUAT MASA BERLAKU SESSION HABIS
header(“Expires: Mon, 26 Jul 1997 05:00:00 GMT”);
header(“Last-Modified: ” . gmdate(“D, d M Y H:i:s”) . ” GMT”);
// HTTP/1.1
header(“Cache-Control: no-store, no-cache, must-revalidate”);
header(“Cache-Control: post-check=0, pre-check=0″, false);
// TIDAK BOLEH DISIMPAN KE CACHE
header(“Pragma: no-cache”);
// MEMBERITAHUKAN KEPADA BROWSER, BAHWA INI MERUPAKAN FILE GAMBAR
header(‘Content-type: image/jpeg’);
// === END OF HEADER HTTP ==
// === BACA DI RFC 2616 —> http://www.faqs.org/rfcs/rfc2616.html
// === MEMBUAT GAMBAR KE BROWSER ==
imagejpeg($image);
// MEMBEBASKAN IMAGE DARI MEMORI ..
imagedestroy($image);
?>
// SESSION HARUS DIAKTIFKAN UNTUK BERKOMUNIKASI DENGAN FILE LAIN
session_start(); // JIKA METODE POST DIKIRIMKAN
if (isset($_POST['txtNumber'])) {
// ANGKA YANG MASUKKAN DENGAN METODE POST
$number = $_POST['txtNumber'];
// JIKA ANGKA YANG ANDA MASUKKAN SAMA YANG TELAH DIHASHING SAMA DENGAN ANGKA HASHING YANG TELAH
// DIKIRIMKAN MENJADI FILE GAMBAR MAKA VERIFIKASI BENAR
if (md5($number) == $_SESSION['image_random_value'])
echo “Anda berhasil memasukkan nomor verifikasi”;
else
echo “Angka yang anda masukkan salah. Coba lagi”;
}
?>
session_start(); // JIKA METODE POST DIKIRIMKAN
if (isset($_POST['txtNumber'])) {
// ANGKA YANG MASUKKAN DENGAN METODE POST
$number = $_POST['txtNumber'];
// JIKA ANGKA YANG ANDA MASUKKAN SAMA YANG TELAH DIHASHING SAMA DENGAN ANGKA HASHING YANG TELAH
// DIKIRIMKAN MENJADI FILE GAMBAR MAKA VERIFIKASI BENAR
if (md5($number) == $_SESSION['image_random_value'])
echo “Anda berhasil memasukkan nomor verifikasi”;
else
echo “Angka yang anda masukkan salah. Coba lagi”;
}
?>
Tidak ada komentar:
Posting Komentar