Author Topic: วิธีป้องกัน spam ในบอร์ด SMF ใครที่ใช้บอร์ด SMF หากต้องการให้บุคคลทั่วไปที่ไม่ได้สมัครสมาชิกสามารถ  (Read 5622 times)

ontcftqvx

  • สมาชิกใหม่
  • *
  • Posts: 0
    • View Profile
วิธีป้องกัน spam ในบอร์ด SMF

ใครที่ใช้บอร์ด SMF หากต้องการให้บุคคลทั่วไปที่ไม่ได้สมัครสมาชิกสามารถโพสได้  ก็คงเจอกับปัญหา spam ที่โพตอัตโนมัติเข้ามาในบอร์ดนะครับ ผมเคยดาวน์โหลดตัว capcha มาลงแล้วก็ยังป้องกันไม่ได้

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

แต่หาก spam มันฉลาด มันสามารถสมัครสมาชิกเองได้ เราก็ไป Set ในระบบให้สมาชิกตั้งรหัสผ่านที่ยากขึ้น หรือให้สมาชิกยืนยันการสมัครผ่านอีเมลล์ แค่นี้เราก็ป้องกัน spam ได้แล้วครับ

 

มาเริ่มกันเลยครับ การกำหนดว่าหากไม่สมัครเป็นสมาชิกจะไม่สามารถโพตส์ข้อความที่มีลิ้งค์ได้ 



เข้าไปในไฟล์  ./Sources/Post.php

แล้วค้นหา
โค๊ด:
if (empty($modSettings['guest_post_no_email']))
{
if (!isset($_REQUEST['email']) || $_REQUEST['email'] == '')
$context['post_error']['no_email'] = true;
elseif (preg_match('~^[0-9A-Za-z=_+\-/][0-9A-Za-z=_\'+\-/\.]*@[\w\-]+(\.[\w\-]+)*(\.[\w]{2,6})$~', stripslashes($_REQUEST['email'])) == 0)
$context['post_error']['bad_email'] = true;
}


จากนั้นเพิ่มโค๊ดด้านล่างนี้ใว้ข้างหลังโค๊ดด้านบน
โค๊ด:
//ป้องกัน Spam
$linkpos = strpos ($_POST['message'], "://"); // look for ://
if ($linkpos !== false) $context['post_error']['guest_no_link'] = true; else { $linkpos = strpos ($_POST['message'], "www."); // look for www.
if ($linkpos !== false) $context['post_error']['guest_no_link'] = true;}

และ

ค้นหา
โค๊ด:
// Now make sure this email address is not banned from posting.
isBannedEmail($_POST['email'], 'cannot_post', sprintf($txt['you_are_post_banned'], $txt[28]));

เพิ่มโค๊ดข้างล่างนี้หลังโค๊ดด้านบน
โค๊ด:
// ป้องกัน Spam
 if (isset($_POST['message'])) { $linkpos = strpos ($_POST['message'], "://");
// look for ://
 if ($linkpos !== false) $post_errors[] = 'guest_no_link'; else { $linkpos = strpos ($_POST['message'], "www.");
// look for www.
 if ($linkpos !== false) $post_errors[] = 'guest_no_link'; } }
 //



หลังจากนั้นเข้าไปที่ไฟล์  ./Themes/default/languages/Errors.thai.php

เพิ่มโค๊ดข้างล่างนี้เข้าไปในไฟล์ครับ ข้างล่างสุดก่อน ?>
โค๊ด:
$txt['error_guest_no_link'] = 'ขออภัย  บุคคลทั่วไปไม่สามารถโพสลิงค์ได้  กรุณาลงทะเบียน';

เพียงเท่านี้เราก็หมดปัญหาเรื่อง spam   


อ้างอิง : http://www.justusers.net/forum/index.php?topic=561.0