รวมเรื่องน่ารู้ มีประโยชน์ > รวมปัญหา และการใช้งานเว็บบอร์ด SMF

ป้องกัน สแปม (Spam) ต่างประเทศ SMF

(1/1)

rpgok:
ป้องกัน สแปม (Spam) ต่างประเทศ SMF
ผมเอามาจากที่นี่ครับ

เปิดไฟล์ Themes/default/Post.template.php หรือ theme ที่คุณใช้และมีการสร้าง template แยก ก็ให้เลือกไฟล์ Post.template.php
ประมาณบรรทัดที่ 969 จาก default theme  จากโค๊ด


--- โค๊ด: ---// Finally the most important bit - the actual text box to write in!
echo '
<tr>
<td valign="top" align="right"></td>
<td>
<textarea class="editor" name="', $context['post_box_name'], '" rows="', $context['post_box_rows'], '" cols="', $context['post_box_columns'], '" onselect="storeCaret(this);" onclick="storeCaret(this);" onkeyup="storeCaret(this);" onchange="storeCaret(this);" tabindex="', $context['tabindex']++, '"', isset($context['post_error']['no_message']) || isset($context['post_error']['long_message']) ? ' style="border: 1px solid red;"' : '', '>', $message, '</textarea>
</td>
</tr>';
--- End code ---

ใส่โค๊ดนี้เพิ่มเติมต่อท้ายเข้าไปครับ

--- โค๊ด: ---// tohm block farang แสดงช่องให้กรอกข้อมูลกันการแสปมแบบภาษาไทย
   echo '
         <tr>
     <td valign="top" align="right">กันการแสปม</td>
<td>
                   '.$txt['randomblockfarang'].' <input type="text" name="ForThaiPost"  size="50" />
</td>
</tr>' ;
--- End code ---

ทีนี้เปิดไฟล์ Themes/default/languages/Errors.english <- หากใช้ eng lang และ Errors.thai-utf8.php <- หากใช้ภาษาไทยร่วมด้วย

เพิ่มโค๊ดนี้เข้าไปครับ เอาไว้ล่างสุดของบรรทัดก็ได้

--- โค๊ด: ---$txt['error_answer_wrong'] = 'คำตอบเพื่อกันการแสปมของคุณไม่ถูกต้อง!' ;
--- End code ---

หรือใส่โค๊ดนี้เข้ไปสำหรับเวอร์ชั่นภาษาอังกฤษ

--- โค๊ด: ---$txt['error_answer_wrong'] = 'your answer not match!' ;
--- End code ---

ทีนี้ก็มาที่ไฟล์สุดท้ายครับ เปิดไฟล์ Sources/Post.php

ที่ function Post ประมาณบรรทัดที่ 92 หรือจากโค๊ด


--- โค๊ด: ---function Post()
{
global $txt, $scripturl, $topic, $db_prefix, $modSettings, $board, $ID_MEMBER;
global $user_info, $sc, $board_info, $context, $settings, $sourcedir;
global $options, $func, $language;

loadLanguage('Post');
--- End code ---

เพิ่ม code นี้เข้าไปครับ


--- โค๊ด: ---/* tohm block farang เพิ่มโค๊ดส่วนของป้องกันการแสปมจากต่างประเทศ powered by Ittiphol Pudgrajang */

$blockfarang = array('A'=>array('คำนำหน้านามของผู้ชายไทยคือ','นาย'),
                                       'B'=>array('คำนำหน้านามของผู้หญิงไทยที่แต่งงานแล้วคือ','นาง'),
                                   'C'=>array('คำว่า "เมีย" ในภาษาไทย เรียกให้สุภาพอีกอย่างหนึ่งคือ','ภรรยา'),
                                   'D'=>array('คำว่า "การท่องเที่ยว" มีตัว "ท" อยู่ทั้งหมดกี่ตัว (ตอบเป็นตัวเลข)','2')
                                   )
;

shuffle($blockfarang) ;
   $txt['randomblockfarang'] = $blockfarang[0][0] ; 
$_SESSION['blockfarang_answer'] = $blockfarang[0][1] ;
--- End code ---

ขั้นตอนสุดท้ายครับ ไปที่ function Post2 ประมาณบรรทัดที่ 1280 หรือตรงโค๊ด

--- โค๊ด: --- // Check the subject and message.
if (!isset($_POST['subject']) || $func['htmltrim']($_POST['subject']) === '')
$post_errors[] = 'no_subject';
if (!isset($_POST['message']) || $func['htmltrim']($_POST['message']) === '')
$post_errors[] = 'no_message';
--- End code ---

ให้เพิ่มคำสั่งนี้ต่อท้ายเข้าไปครับ

--- โค๊ด: ---/* tohm block farang powered by Ittiphol Pudgrajang */
   if($_SESSION['blockfarang_answer']!=$_POST['ForThaiPost'])  // ตรวจสอบข้อความที่กรอกมากันฝรั่งแสปม
       $post_errors[] = 'answer_wrong' ;
--- End code ---


ผมทำตามนี้แล้ว ใช้ได้ครับ เลยเอาข้อมูลมาลงไว้ กันหาย
เผื่อมีโอกาสได้ใช้อีกครับ
ขอขอบคุณที่มาของข้อมูลครับ
http://www.thaiseoboard.com/index.php?topic=135807.0

Trisanato:
เดี๋ยวลองเอาไปทำตามดูนะครับ

gloriouss:
ผมกำลังกาโค๊ดนี้อยู่พอดีเลยครับ

นำร่อง

[0] ดัชนีข้อความ

Go to full version