ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน


เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

LogoThai.COM  |  สารสนเทศน่ารู้ ตลาดสด บันเทิงกระจาย  |  ตลาดเศรษฐี (ผู้ดูแล: LesCop)  |  smf ป้องกันการ post link ในบอร์ด
LOGOthai.com

คลิกที่นี่ -->> เปรียบเทียบทำเลและราคาที่ดินวังน้ำเขียวผ่าน GooleMAP | คลิกที่นี้ -->> Upload ภาพ

หน้า: [1]   ลงล่าง
  พิมพ์  
ผู้เขียน หัวข้อ: smf ป้องกันการ post link ในบอร์ด  (อ่าน 3029 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
LesCop
แหลม+คม=หอก
Administrator
เศรษฐีพันล้าน
*

พลังน้ำใจ 575
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 450


ขอหยุดที่86เอย


ดูรายละเอียด
« เมื่อ: 03 กุมภาพันธ์ 2556 23:01:53 »

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

ส่วนมาก 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
แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า


>> เมื่อโกรธจัด อย่าเพิ่งตอบข้อความใคร..
>> เมื่อดีใจ อย่าเพิ่งให้สัญญา..
>> เมื่อเศร้าหนักหนา อย่างเพิ่งตัดสินใจ..
LesCop
แหลม+คม=หอก
Administrator
เศรษฐีพันล้าน
*

พลังน้ำใจ 575
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 450


ขอหยุดที่86เอย


ดูรายละเอียด
« ตอบ #1 เมื่อ: 03 กุมภาพันธ์ 2556 23:14:59 »

เจอมาใหม่คับ ขำๆดี

ใช้เทคนิคเดิม คือตรวจดูว่าข้อความที่โพสมีภาษาไทยอยู่ด้วยหรือเปล่า ถ้าไม่ใช่ก็ไม่ให้ผ่าน เหมาะสำหรับคนที่มีเว็บบอร์ด SMF แบบไม่ต้องสมัครสมาชิกก็โพสได้ หรือแบบต้องสมัครสมาชิกก่อนถึงจะโพสได้ (เพราะบางทีแสปมต่างชาติมันก็สมัครมาโพสป่วนบอร์ดได้เหมือนกัน)


นำโค้ดด้านล่างไปใส่ในไฟล์  Sources/Post.php  แล้วเซฟเป็น UTF-8 อัพโหลดไปทับของเดิมบนโฮส

**อยู่ประมาณ บรรทัดที่ 1282  (ใต้บรรทัด // Check the subject and message.)


อ้างถึง
  if(!preg_replace('/[^ก-ฮ]/u','',$_POST['subject'])){
  $post_errors[] = 'no_subject';
   }

   if(!preg_replace('/[^ก-ฮ]/u','',$_POST['message'])){
  $post_errors[] = 'no_subject';
   }
« แก้ไขครั้งสุดท้าย: 03 กุมภาพันธ์ 2556 23:20:34 โดย LesCop » แจ้งลบกระทู้นี้หรือติดต่อผู้ดูแล   บันทึกการเข้า


>> เมื่อโกรธจัด อย่าเพิ่งตอบข้อความใคร..
>> เมื่อดีใจ อย่าเพิ่งให้สัญญา..
>> เมื่อเศร้าหนักหนา อย่างเพิ่งตัดสินใจ..
LesCop
แหลม+คม=หอก
Administrator
เศรษฐีพันล้าน
*

พลังน้ำใจ 575
ออฟไลน์ ออฟไลน์

เพศ: ชาย
กระทู้: 450


ขอหยุดที่86เอย


ดูรายละเอียด
« ตอบ #2 เมื่อ: 03 กุมภาพันธ์ 2556 23:19:20 »

แบบนี้ 1 ก็อธิบายง่ายๆครับคือ ตั้งค่าให้บุคคลทั่วไปไม่สามารถโพสกระทู้ได้
แต่ก็ใช่ว่า เดี่ยวนี้ spam จะไม่สามารถสมัครสมาชิกได้นะครับเดี่ยวนี้มันทำได้แล้ว ดังนั้นก็คงต้องไปตั้งค่าให้สมัครยากๆหน่อย
เช่นให้ ให้สมาชิกยืนยันตัวเองทาง อีเมล์สะก่อน แน่นอนครับช่วยได้90 % เลยครับ

ที่บอกว่า 90 เพราะว่า ผมทำมาหลายเว็บไม่เคยโดน แต่ทีนี้ พึ่งมาโดนก็เว็บนี้แหละครับ มันดันสมัครและ ยืนยันได้ ก็เลยงงเลย
แต่ก็แค่ คนเดียว 55+ ตอนนี้ผมเลยปิดรับสมัครไปสำหรับบอร์ดแห่งนี้ เพราะเอาไว้เก็บความรู้ของผม และให้คนอื่นๆมาศึกษาอย่างเดียวก็คงพอครับ


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


>> เมื่อโกรธจัด อย่าเพิ่งตอบข้อความใคร..
>> เมื่อดีใจ อย่าเพิ่งให้สัญญา..
>> เมื่อเศร้าหนักหนา อย่างเพิ่งตัดสินใจ..
แท็ก:
หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  


:: ข้อตกลงร่วมกัน ::
ห้ามโพสต์รูปลามก หรือสิ่งผิดกฏหมายทุกประเภท
ห้ามโพสต์ข้อความที่ทำให้ผู้อื่นเสียหาย ห้ามใช้วาจาไม่สุภาพ หรือด่าทอ ข้อความหรือเนื้อหาที่เกิดขึ้น ผู้โพสต์ต้องเป็นคนรับผิดชอบเท่านั้น หากเราตรวจสอบว่ามีการโพสต์รูปลามก หรือทำสิ่งผิดกฎหมาย
เราจะลบโพสต์ทันทีโดยไม่ต้องแจ้งให้ทราบล่วงหน้า




คลิกที่นี่ -->> จัดพระของขวัญเข้ารุ่นและพิมพ์

หน้านี้ถูกสร้างขึ้นภายในเวลา 0.12 วินาที กับ 26 คำสั่ง