Validation Rule สำหรับตรวจสอบรหัสบัตรประชาชน

6 มีนาคม 2564
Validation Rule สำหรับตรวจสอบรหัสบัตรประชาชน

ในการสมัครใช้งานระบบหลาย ๆ ครั้งต้องมีการยืนยันตัวตนผู้ใช้งานด้วยรหัสบัตรประชาชน ใน Laravel สามารถทำการตรวจสอบรหัสบัตรประชาชนได้ผ่าน package Thai ID Card Validation

ติ้ดตั้ง

require package ด้วย composer

composer require phattarachai/thai-id-card-validation

การใช้งาน

วิธีการใช้งานทำได้โดย เรียกใช้ class ThaiIdCardRule ใน field ที่ต้องการทำ validation

use Phattarachai\ThaiIdCardValidation\ThaiIdCardRule;

// ใน controller
$this->validate($request, [
    'email' => 'required',
    'id_card_no' => new ThaiIdCardRule,
    // ... 
]);

โดยถ้ารหัสบัตรประชาชนถูกต้อง จะผ่าน validation ถ้าหากต้องการตัวอย่างเลขรหัสบัตรประชาชนเพื่อทดสอบระบบ สามารถหาได้ที่ เครื่องมือสุ่มรหัสบัตรประชาชน

Validation Message

ถ้า validate ไม่ผ่านจะแสดงข้อความ รหัสบัตรประชาชนไม่ถูกต้อง เป็นค่าเริ่มต้ม ถ้าต้องการแก้ไข message สามารถ override class เพื่อแก้ message ได้

use Phattarachai\ThaiIdCardValidation\ThaiIdCardRule as Rule;

class ThaiIdCardRule extends Rule
{
    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'รหัสบัตรประชาชนไม่ถูกต้อง';
    }
}

การใช้งานใน PHP (นอก Laravel Project)

ถ้าต้องการตรวจสอบรหัสบัตรประชาชนใน PHP หรือ Framework อื่น ๆ ที่ไม่ใช่ Laravel สามารถทำได้ผ่าน class ThaiIdCard

use Phattarachai\ThaiIdCardValidation\ThaiIdCard;

$result = (new ThaiIdCard)->validate('1085217077105');
// true

$result = (new ThaiIdCard)->validate('1234567890123');
// false

ความหมายของเลขรหัสบัตรประชาชนในแต่ละหลัก

  • หลักที่ 1 ระบุประเภทของคน แบ่งเป็น 8 ประเภทดังนี้
    • ประเภท 1 คือ คนที่มีสัญชาติไทยและแจ้งเกิดในเวลากำหนด
    • ประเภท 2 คือ คนที่มีสัญชาติไทยแต่แจ้งเกิดเกินเวลาที่กำหนด
    • ประเภท 3 คือ คนไทยหรือคนต่างด้าวและมีชื่ออยู่ในทะเบียนบ้านก่อน 31/05/2527
    • ประเภท 4 คือ คนไทยหรือคนต่างด้าวที่มีใบสำคัญคนต่างด้าวแต่แจ้งย้ายเข้า โดยไม่มีเลขบัตร
    • ประเภท 5 ตือ คนที่เพิ่มเข้าไปทีหลัง อาจเพราะตกสำรวจหรือสาเหตุอื่น
    • ประเภท 6 คือ คนที่เข้าเมื่องโดยไม่ถุกกฏหมาย หรือถูกกฏหมายแต่เป็นสถานะชั่วคราว
    • ประเภท 7 คือ ลูกของคนในประเภท 6
    • ประเภท 8 คือ คนต่างด้าวที่ได้รับสัญชาติไทยอย่างถูกฏหมาย
  • หลักที่ 2 ถึง 5 ระบุสถานที่เกิด โดยหลักที่ 2-3 หมายถึงจังหวัด หลักที่ 4-5 หมายถึงอำเภอ
  • หลักที่ 6 ถึง 10 ระบุเลขในทะเบียนบ้าน
  • หลักที่ 11 และ 12 ระบุลำดับการเกิดในบุคคลประเภทนั้นๆ
  • หลักที่ 13 ใช้ตรวจสอบความถูกต้อง

สูตรคำนวณรหัสบัตรประชาชน

สูตรคำนวณรหัสบัตรประชาชนใช้วิธีนี้

ผลรวม =  (หลักที่ 1 x 13)
         (หลักที่ 2 x 12)
         (หลักที่ 3 x 11)
         (หลักที่ 4 x 10)
         (หลักที่ 5 x 9)
         (หลักที่ 6 x 8)
         (หลักที่ 7 x 7)
         (หลักที่ 8 x 6)
         (หลักที่ 9 x 5)
         (หลักที่ 10 x 4)
         (หลักที่ 11 x 3)
         (หลักที่ 12 x 2)
ัตัวเลขหลักที่ 13 = ((11 - (ผลรวม % 11)) % 10

ตัวอย่างเช่น รหัสบัตรประชาชน 1737063686013

1737063686013
ผลรวม =  (1 x 13)
         (7 x 12)
         (3 x 11)
         (7 x 10)
         (0 x 9)
         (6 x 8)
         (3 x 7)
         (6 x 6)
         (8 x 5)
         (6 x 4)
         (0 x 3)
         (1 x 2)
      = 13 + 84 + 33 + 70 + 0 + 48 + 21 + 36 + 40 + 24 + 0 + 2
      = 371
ัตัวเลขหลักที่ 13
    3 = ((11 - (371 % 11)) % 10
      = (11 - 8) % 10
      = 3 % 10
      = 3

อ้างอิง

ดูเพิ่มเติมได้ที่ GitHub Repository

Phattarachai Chaimongkol
เกี่ยวกับ phattarachai.dev

สวัสดีครับ เป็น Full Stack Web Developer สามารถดูแลงานทั้งระบบได้ ทำงานสายนี้มากว่า 10 ปี ผ่านงานทางภาครัฐ เป็นที่ปรึกษาบริษัทเอกชน มีงาน Web App ทั้งเล็กและใหญ่ ระบบ Inventory, งาน ERP พร้อมใช้ประสบการณ์ที่มีแก้ไขปัญหาธุรกิจให้ลูกค้าครับ

เรื่องล่าสุด

งานพัฒนา Platform Video E-learning
6 มีนาคม 2564
งานพัฒนา Platform Video E-learning
รับงาน Web Scrapping อ่านข้อมูลเว็บไซต์ส่งแจ้งเตือน Line Notification
6 มีนาคม 2564
รับงาน Web Scrapping อ่านข้อมูลเว็บไซต์ส่งแจ้งเตือน Line Notification
รับงาน ดึงข้อมูลโพสต์ Facebook Group / รูปภาพ / เนื้อหา ลงไฟล์ ส่งเข้า Google Drive
6 มีนาคม 2564
รับงาน ดึงข้อมูลโพสต์ Facebook Group / รูปภาพ / เนื้อหา ลงไฟล์ ส่งเข้า Google Drive