Menolak Komentar Spam Secara Otomatis

Beberapa hari yang lalu blog tercinta ini diserang banyak sekali komentar spam, dari situ muncul ide untuk membuat penangkal spam otomatis dengan menggunakan sedikit skrip PHP.

Secara default WordPress memang dilengkapi plugin Akismet yang cukup tangguh untuk melawan spam. Tetapi kita bisa juga membuat anti spam sendiri yang dapat bekerja secara otomatis menyingkirkan spam yang masuk ke blog WordPress kita.

Caranya tinggal mengkopi skrip PHP saya dibawah ini dan paste ke functions.php yang ada pada theme blog kamu, kalau belum ada bikin aja filenya.

function in_comment_post_like($string, $array) {
	foreach($array as $ref) { if(strstr($string, $ref)) { return true; } }
	return false;
}
function drop_bad_comments() {
	if (!empty($_POST['comment'])) {
		$post_comment_content = $_POST['comment'];
		$lower_case_comment = strtolower($_POST['comment']);
		$bad_comment_content = array(
			'viagra',
			'hydrocodone',
			'hair loss',
			'[url=http',
			'[link=http',
			'xanax',
			'tramadol',
			'russian girls',
			'russian brides',
			'lorazepam',
			'adderall',
			'dexadrine',
			'no prescription',
			'oxycontin',
			'without a prescription',
			'sex pics',
			'family incest',
			'online casinos',
			'online dating',
			'cialis',
			'best forex',
			'amoxicillin'
		);
		if (in_comment_post_like($lower_case_comment, $bad_comment_content)) {
			$comment_box_text = wordwrap(trim($post_comment_content), 80, "n  ", true);
			$txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a');
			fwrite($txtdrop, "  --------------n  [COMMENT] = " . $post_comment_content . "n  --------------n");
			fwrite($txtdrop, "  [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "n");
			fwrite($txtdrop, "  [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "n");
			fwrite($txtdrop, "  [REFERER  ] = " . $_SERVER['HTTP_REFERER'] . "n");
			fwrite($txtdrop, "  [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "n");
			fwrite($txtdrop, '--------------**********------------------'."n");
			header("HTTP/1.1 406 Not Acceptable");
			header("Status: 406 Not Acceptable");
			header("Connection: Close");
			wp_die( __('bang bang.') );
		}
	}
}
add_action('init', 'drop_bad_comments');

Komentar yang mengandung bad_comment_content secara otomatis dinilai sebagai spam. Disitu semua kata-katanya dalam array menggunakan bahasa inggris, karena ya komentar spam yang masuk ke blog ini menggunakan kata-kata itu, jadi kamu bisa menambahkan sendiri untuk daftar kata-kata yang digunakan.

Semoga bermanfaat, jangan lupa subscribe ke painthink RSS Feed.

5 Comments

  1. infonya menarik sob, sangt berguna ..
    btw, spammer emang bikin jengkel!!! 😀

  2. tips yang menarik
    kadang akismet lolos dalam memblok spam
    saya bookmark dulu..
    btw biar adil, link kamu saya taruh di page link. kan disini nggak ada blogroll di sidebar. oke..

  3. di blog saya yang ini maksudnya

  4. bagus niy sob scriptnya… langsung praktek…

Leave a Reply to annosmile Cancel