Spam invade my blog!

ได้ฤกษ์โพสต์เรื่องนี้ซะทีหลังจากที่ปล่อยให้มันรุกรานมาเนิ่นนาน วันนี้คงได้เวลาตั้งรับกันบ้างแล้ว ด้วยเหตุนี้ก็เลยเอามาเขียนประกาศสงครามซะ

มันนานพอสมควรแล้วหละครับ ที่มี Spam วิ่่งเข้ามาในบล็อคผม จำไม่ได้แล้วว่าเคยไปทำอะไรไว้ มันถึงได้วิ่งเข้ามาขนาดนี้
ถ้าเกิดว่ามาธรรมดาๆ ไม่เป็นไรครับ แต่มันดันปั่นคอมเมนต์ซะรัวเลย – -* ขี้เกียจมานั่งลบ

แล้ววันนึงเข้าไปเช็ค Stats เว็บตัวเองใน Cpanel โอ้แม่เจ้า ! ทำไม bandwith มันพุ่งได้ขนาดนั้น เกือบเต็มหลอด ทั้งๆ ที่บล็อกแห่งนี้วันๆ นึง
มันก็ไม่ได้มีคนเข้าซะเท่าไหร่ (ไม่ได้เล่นเสียว) เลยคิดว่าคงเป็นเพราะไอ้พวก Spam บ้าพวกนั้นมันเข้ามาป่วนมากไป

ดังนั้น ถ้าผมไม่รีบจัดการกับปัญหานี้ ได้ขยายโฮสต์แหงมๆ (เปลืองเงินโดยใช่เหตุอีก)

สมัยก่อนผมเคยใช้ reCaptcha ช่วงนั้นมันก็มีมานะครับ แต่ว่าจะเด้งเข้า Spam หมด เลยง่ายต่อการกำจัด แต่ว่าตอนนี้ดันทะลึ่ง
ทำธีมแบบมั่วๆ เน้น Outside ไม่เน้น Inside เรียบร้อยเลยครับ ถ้าใส่ reCaptcha มันจะทำให้หน้าเว็บแปลกๆ ต้องมานั่งแก้ๆ อีก
เลยตัดสินใจไม่ใช้มันครับ

แล้วทีนี้จะแก้ยังไง? ก็มาคิดๆ ครับ จริงๆ ถ้ามันไม่ submit คอมเมนต์ bandwith ก็น่าจะไม่พุ่ง เพราะมันจะไม่ส่งค่าไปที่ db
ดังนั้นการใช้ reCaptcha ก็น่าจะยังทำให้ bandwith พุ่งอยู่ (พยายามหาเหตุผลเพื่อไม่ใช้แบบเต็มที่เลยแฮะเรา)

สุดท้ายก็คิดวิธีง่ายๆ ออกครับ ใช้ javascript events เอาก็ได้ onSubmit แล้วก็เช็ค input ซักอัน ถ้าเกิดว่าตรงเงื่อนไขก็ให้มัน submit
ไปแต่ถ้าไม่ตรงก็ return false กด submit ให้ตายก็ไม่ผ่าน

วิธีก็แค่เปิดไฟล์ comments.php ในโฟลเดอร์ theme แก้โค้ด form ใหม่เป็น

<form action="<?php echo get_option('siteurl'); ?>/wp-comments-post.php" method="post" id="commentform" onSubmit="if(document.getElementById('areyouhuman').value != 'yes') return false;">

แล้วก็เพิ่ม input form เข้าไปแบบนี้

<p><input id="areyouhuman" name="areyouhuman" type="text" size="22" /> Are you human? ---input "yes" without quote (")</p>

เซฟ เสร็จ !

จากนั้นก็ได้แต่ภาวนาว่าวิธีนี้มันจะได้ผล

ปล. มันมีวิธีป้องกันตั้งหลายวิธี แต่ผมไม่หาเอง ขี้เีกียจคุยกะ Google

Tags: , , ,

Leave a Reply