มาบวกเลขป้องกัน spam จาก comment (หรืออื่น ๆ ) กันดีกว่าดีกว่า (ใน PHP)

เริ่มแรกง่าย ๆ เลย สุ่มตัวเลขสัก 2 ตัวก่อน แล้วเก็บลง Session ไว้ซะ

  1. // เริ่มสร้างตัวเลขสุ่มไว้สองตัว
  2. $_SESSION['rand_x'] = rand(1, 9);
  3. $_SESSION['rand_y'] = rand(1, 9);
  4. // จบการสร้างตัวเลขสุ่ม

แล้วก็เอาค่าที่ได้ไปแสดง แล้วก็ให้กรอกผลของการบวก

  1. <!-- เริ่มส่วนของการบวกเลข -->
  2. กรุณาบวกเลขต่อไปนี้
  3. < ?php echo $_SESSION&#91;'rand_x']; ?> + < ?php echo $_SESSION&#91;'rand_y']; ?> = <input type="text" name="rand_ans" size="10" />
  4. <!-- จบส่วนของการบวกเลข -->

โค้ดด้านบนก็เอาไปใส่ใน form เพื่อให้เอาคำตอบให้มันส่งค่าไปยังปลายทาง

ส่วนปลายทางที่รับค่าจาก form ซึ่งก่อนทำเรื่องอื่น ๆ ก็เช็คก่อนเลยว่า บวกเลขมาถูกต้องหรือเปล่า โดยเอาค่าที่อยู่ใน session มาบวกและเืทียบค่ามันซะ ถ้าใช่ก็ปล่อยไปทำอย่างอื่น ถ้าไม่ใช่ก็ die มัน หรือจะทำอะไรต่อก็สุดแล้วแต่ครับ

  1. // เริ่มตรวจสอบการบวกเลข
  2. if(($_SESSION['rand_x'] + $_SESSION['rand_y']) != $_POST['rand_ans']) {
  3.     die("คุณบวกเลขผิด");    
  4. }
  5. // จบการตรวจสอบการบวกเลข

แค่นี้ก็พอกัน comment ที่มา spam ได้ อาจจะปรับเปลี่ยนรูปแบบการแสดงผล หรือตำแหน่งในการวาง input form ต่าง ๆ ได้ตามความเหมาะสม หรือจะสุ่มตำแหน่งก็ได้ เพื่อป้องกัน bot ที่สามารถปรับตัวได้ตามลักษณะของการบวกเลขแบบนี้ครับ ซึ่งการ ทำระบบบวกเลขนี้ก็คล้าย ๆ กับการทำ captcha แหละครับ แต่อันนี้จะง่ายและไม่ซับซ้อนมากเท่าครับ

โดยตัวแนวคิดได้มาจากแนวคิดของ Match Captcha ของ Drupal แหละครับ

เพิ่ม Captcha ลงในส่วนของการกรอก Comment

ไม่ไหวจริง ๆ วันนี้โดน spam comment ทั้งวัน ถึงแม้ว่า Akismet จะดักได้และยัดลง Awaiting Moderation แล้ว แต่ว่ามันขึ้นเยอะมาก ๆ และมันก็ส่งอีเมลแจ้งตลอด รำคาญมาก ๆ วันนี้ตอนเย็น ๆ เลยยัด Captcha ลงซะเลย จะได้สบายใจหน่อย เฮ้อ ….. ดักกัน 2 ทางไปเลย หมดเรื่องหมดราว ;)

Plugins – Captcha!

Font – Dafont