ถือว่าเกรียนมากครับในการเขียนบทความนี้ขึ้น 😀
แบบ Basic เนื่องจากผมไม่ได้เขียน Coding ที่ซับซ้อนอะไร ซึ่งถ้าจะ Advance ก็เปลี่ยนได้จาก ณ จุดนี้
จุดนี้คือตัวแปรที่เราเพิ่มขึ้นมาเอง ซึ่ง Spam Script ไม่สามารถเดาตัวแปรใหม่ๆได้นั่นเอง
วิธีทำ
1. เปิด file ชื่อ wp-includes/theme-compat/comment.php หา บรรทัดนี้ให้เจอ อยู่ล่างๆเลย
<p><textarea name=”comment” id=”comment” cols=”58″ rows=”10″ tabindex=”4″></textarea></p> ประมาณบรรทัดที่ 89
จากนั้นเขียนเพิ่มลงไปว่า
<p><input type=”checkbox” name=”oniphp” id=”oniphp” value=”1″ tabindex=”4″ />
<label for=”oniphp”><small><?php _e(‘Human?’); ?></small></label></p>คำว่า oniphp สามารถเปลี่ยนเป็นอะไรก็ได้นะ
2. เปิด file ชื่อ wp-comments-post.php อยู่ด้านนอกสุดเลย หาคำว่า
if ( ” == $comment_content )
wp_die( __(‘<strong>ERROR</strong>: please type a comment.’) ); ประมาณบรรทัดที่ 83จากนั้นเขียนเพิ่มลงไปว่า
$comment_oniphp = ( isset($_POST[‘oniphp’]) ) ? trim($_POST[‘oniphp’]) : null;
if ( $comment_oniphp != 1 ) wp_die( __(‘<strong>ERROR</strong>: Sorry, No bots entry!!!.’) );
3. เปิด file ชื่อ wp-trackback.php อยู่ด้านนอกสุดเช่นกัน หาคำว่า
$comment_type = ‘trackback’; อยู่ประมาณ บรรทัดที่ 98
จากนั้นเขียนเพิ่มลงไปว่า
if(isset($_SERVER[‘HTTP_REFERER’])){
$http_referer = $_SERVER[‘HTTP_REFERER’];
preg_match(“/^http://www.(.+?)//i”,$url,$matches);
$domain_name = get_option(‘siteurl’).”/”;
if($matches[0] != $domain_name){
wp_die( __(‘<strong>ERROR</strong>: Sorry, No bots entry!!!.’) );
}
}
ขออธิบายคร่าวๆนะครับ
ข้อ 1 หมายถึง เพิ่ม checkbox ให้คนสามารถ ติ๊กว่า เป็น Human(มนุษย์) หรือเปล่า
ข้อ 2 หมายถึง รับค่า checkbox ถ้าไม่มีการ ติ๊ก ให้ ฟ้อง error ออกมา
ข้อ 3 หมายถึง เช็คที่มาจากการส่งต่อผ่านมายัง trackback นี้ ถ้าไม่ใช่ domain ของเรา ก็ฟ้อง error ออกมา
เมื่อทำครบ 3 ข้อแล้ว ก็ไม่มี Spam Script มากวนใจ แต่ ถ้าจงใจเขียน Script Spam มาที่เว็บของเราจริงๆ คงต้องเปลี่ยนจากการ ติ๊ก Human เป็น ตัวเลขบวกกันได้เท่าไหร่ หรือ กรอกตามตัวอักษรนะค๊าฟฟ ^^