Home Webboard ArticlesKnowledges  

ผู้เขียน หัวข้อ: ป้องกัน spam บุคคลทั่วไป ของผมเอาไม่อยู่ครับขอคำแนะนำ  (อ่าน 11087 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ oay_life

  • Ju
  • *
  • กระทู้: 5
  • เห็นด้วย&ขอบคุณ: 1
ผมลง mod กันสแปมสมัครสมาชิกไว้แล้ว ดังรูปที่ 1 ใช้งานได้ดีครับ หมดปัญหา



บอร์ดผมให้บุคคลทั่วไปโพสต์ได้  ป้องกันไว้ดังรูปที่ 2  เมื่อก่อนไม่มีปัญหา แต่ตอนนี้มันเอาไม่อยู่ มันทะลักเข้ามาแล้วทุกวันเลย



ผมอยากได้ แบบ justuser แบบรูปที่ 3 แถบเหลืองน่ะครับ ต้องเพิ่ม ตรงไหนครับ หรือว่ามี mod ตัวไหนที่ป้องกันได้มากกว่านี้





บอร์ดผมครับ    newbielink:http://www.kru-somsri.ac.th/board [nonactive]   ขอบคุณครับ



ออฟไลน์ Tcomputer

  • Just Staff
  • *
  • กระทู้: 600
  • เห็นด้วย&ขอบคุณ: 498
แนะนำให้ดูในหน้าสารบัญเลยครับผม http://www.justusers.net/forum/index.php?topic=988.0

ออฟไลน์ oay_life

  • Ju
  • *
  • กระทู้: 5
  • เห็นด้วย&ขอบคุณ: 1
ก่อนตั้งกระทู้ ผมหาดูในนั้นหมดแล้วครับ เจอแต่ กันตอนสมัครสมาชิก
ตรงที่โพสต์โดยบุคคลทั่วไป ใช้ Visual verification บล็อคไม่อยู่
กันโดยบล็อค  url ก็กันได้แต่ url   ที่มันหลุดมา มันโพสต์แต่ข้อความไม่มี url

ออฟไลน์ เซียวเหล่งนึ่งฯ

  • Global Moderator
  • *
  • กระทู้: 5547
  • เห็นด้วย&ขอบคุณ: 2148
    • SMFjusthost.com


อ้างถึง
เครดิต ไทยเสียวบอร์ด


[ป้องกันบอร์ด SMF ไม่ให้ฝรั่งโพสต์spamกันเถอะ] สไตล์ไทยๆป้องกันก่อนโพสต์ข้อความ!   เผื่อเพื่อนๆบางคนยังไม่ได้ลง mod กันการแสปมเพิ่มครับ



ต้องขอบคุณพี่ต่อ tdelphi ที่แนะนำไอเดียให้

จริงๆก็มี mod อยู่หลายตัว แต่บางทีไม่ตรงตามความต้องการในการใช้งาน และส่วนใหญ่เป็น mod ตอนจะ register

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

( หมายเหตุลองกับ smf ไม่ได้เวอร์ชั่นใหม่สุด แต่ก็เป็นมาตรฐาน ok โย่วๆ ก่อนแก้ไขกรุณา backup ไฟล์เดิมของท่านที่จะแก้ไขเอาไว้ก่อน กันข้อผิดพลาดที่อาจเกิดขึ้นครับ )

 

-----------------------------------------------------------------------

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

ประมาณบรรทัดที่ 969 จาก default theme  จากโค๊ด

โค๊ด:
โค๊ด: [Select]
// 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>';
ใส่โค๊ดนี้เพิ่มเติมต่อท้ายเข้าไปครับ

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

-------------------------------------------------------------------------

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

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

โค๊ด:
โค๊ด: [Select]
$txt['error_answer_wrong'] = 'คำตอบเพื่อกันการแสปมของคุณไม่ถูกต้อง!' ;
หรือใส่โค๊ดนี้เข้ไปสำหรับเวอร์ชั่นภาษาอังกฤษ


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


----------------------------------------------------------------------

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

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

โค๊ด:
โค๊ด: [Select]
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');

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

โค๊ด:
โค๊ด: [Select]
/* 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] ;

--------------------------------------------------------------------

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

โค๊ด:
โค๊ด: [Select]
// 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';


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

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

##########################################

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

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

$blockfarang = array('Aหรืออะไรก็ได้เป็น key เผื่อนำไปประยุกข์ใช้ลักษณะอื่น => array('คำถาม','คำตอบ') ,
                              'Bคำถามอื่นๆ=>array('คำถามอื่น','คำตอบอื่นๆ)
                              ) ;
###################################################

ลองประยุกข์ใช้งานกันดูนะครับ เผื่อมีประโยชน์สำหรับบางท่านที่ยังไม่ได้ลง mod เพิ่มครับ

ออฟไลน์ เซียวเหล่งนึ่งฯ

  • Global Moderator
  • *
  • กระทู้: 5547
  • เห็นด้วย&ขอบคุณ: 2148
    • SMFjusthost.com
ถ้าต้องการให้แสดงเฉพาะบุคคลทั่วไป 

ให้คร่อมด้วย
โค๊ด: [Select]
if ($context['user']['is_guest'])
{
---- ---- --
---- ---- ------ ---- --
        }

คร่อมให้ครบทุกแท็ก  ยกเว้นไฟล์ภาษา

ออฟไลน์ oay_life

  • Ju
  • *
  • กระทู้: 5
  • เห็นด้วย&ขอบคุณ: 1
เรียบร้อยครับ

เดี๋ยวมารายงานผลนะครับ


ขอบคุณมากๆ ครับ


« แก้ไขครั้งสุดท้าย: 26, กรกฎาคม 2011, 03:58:26 PM โดย oay_life »

ออฟไลน์ บ้าสามสลึง

  • Just
  • **
  • กระทู้: 68
  • เห็นด้วย&ขอบคุณ: 25
ทำไมไม่ป้องกันตั้งแต่ขั้นตอนลงทะเบียนใช้งานล่ะครับ  และกำหนดให้บุคคลทั่วไปโพสต์ข้อความได้
"เกลียด-คน-สวย"

ออฟไลน์ jim_no1

  • Just Member
  • *****
  • กระทู้: 128
  • เห็นด้วย&ขอบคุณ: 19
  • เพศ: ชาย
  • Jimmodify เวปแต่งรถยนต์
    • http://jimmodify.com


อ้างถึง
เครดิต ไทยเสียวบอร์ด


[ป้องกันบอร์ด SMF ไม่ให้ฝรั่งโพสต์spamกันเถอะ] สไตล์ไทยๆป้องกันก่อนโพสต์ข้อความ!   เผื่อเพื่อนๆบางคนยังไม่ได้ลง mod กันการแสปมเพิ่มครับ



ต้องขอบคุณพี่ต่อ tdelphi ที่แนะนำไอเดียให้

จริงๆก็มี mod อยู่หลายตัว แต่บางทีไม่ตรงตามความต้องการในการใช้งาน และส่วนใหญ่เป็น mod ตอนจะ register

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

( หมายเหตุลองกับ smf ไม่ได้เวอร์ชั่นใหม่สุด แต่ก็เป็นมาตรฐาน ok โย่วๆ ก่อนแก้ไขกรุณา backup ไฟล์เดิมของท่านที่จะแก้ไขเอาไว้ก่อน กันข้อผิดพลาดที่อาจเกิดขึ้นครับ )

 

-----------------------------------------------------------------------

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

ประมาณบรรทัดที่ 969 จาก default theme  จากโค๊ด

โค๊ด:
โค๊ด: [Select]
// 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>';
ใส่โค๊ดนี้เพิ่มเติมต่อท้ายเข้าไปครับ

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

-------------------------------------------------------------------------

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

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

โค๊ด:
โค๊ด: [Select]
$txt['error_answer_wrong'] = 'คำตอบเพื่อกันการแสปมของคุณไม่ถูกต้อง!' ;
หรือใส่โค๊ดนี้เข้ไปสำหรับเวอร์ชั่นภาษาอังกฤษ


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


----------------------------------------------------------------------

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

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

โค๊ด:
โค๊ด: [Select]
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');

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

โค๊ด:
โค๊ด: [Select]
/* 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] ;

--------------------------------------------------------------------

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

โค๊ด:
โค๊ด: [Select]
// 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';


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

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

##########################################

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

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

$blockfarang = array('Aหรืออะไรก็ได้เป็น key เผื่อนำไปประยุกข์ใช้ลักษณะอื่น => array('คำถาม','คำตอบ') ,
                              'Bคำถามอื่นๆ=>array('คำถามอื่น','คำตอบอื่นๆ)
                              ) ;
###################################################

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

เพราะว่าทำแล้ว ไม่ได้อย่างที่ต่องการซะทีน่ะครับ
 *ขออภัย จำกัดสิทธิ์การใส่ Link-URL ในลายเซ็น*  เวปที่รวบรวมข้อมูลเกี่ยวกับการตกแต่งรถยนต์และป้ายทะเบียนมากที่สุดของเมืองไทย

ออฟไลน์ เซียวเหล่งนึ่งฯ

  • Global Moderator
  • *
  • กระทู้: 5547
  • เห็นด้วย&ขอบคุณ: 2148
    • SMFjusthost.com

noiseed

  • บุคคลทั่วไป
ทำตามที่บอกแล้วใช้งานได้ แต่
ขึ้น warning ครับ
Warning: Unexpected character in input: ' in /home/loeicom/domains/loei108.com/public_html/webboard/Sources/Post.php on line 677

Warning: Unexpected character in input: ' in /home/loeicom/domains/loei108.com/public_html/webboard/Sources/Post.php on line 2059

Warning: Unexpected character in input: ' in /home/loeicom/domains/loei108.com/public_html/webboard/Sources/Load.php(1733) : eval()'d code on line 455

ออฟไลน์ เซียวเหล่งนึ่งฯ

  • Global Moderator
  • *
  • กระทู้: 5547
  • เห็นด้วย&ขอบคุณ: 2148
    • SMFjusthost.com
ท่านลองเช็คการวางโค๊ดดเ้วย  ดูตัวปิด/เปิด เอคโค่ 
โค๊ดตามนี้ทำสะหรับ  1.1*  ธีมดีฟอลด์ 
- ไม่สามารถใช้กับ 2.0 ได้  2.0 มีฟีเจอร์นี้อยู่แล้ว
- ถ้าใช้ธีมอื่นๆ ต้องไล่โค๊ดให้ถูก

 

Sitemap 1 2 3 4 5 6 
Back to top