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

มองหาคนช่วยทำ Web App ใช้ภายในธุรกิจอยู่มั้ยครับ
มีความชำนาญในการพัฒนา Web Application ด้วย Laravel รับพัฒนาโปรเจคให้ผู้ประกอบการ ธุรกิจ SME ทั้งขนาดเล็กและขนาดใหญ่ พัฒนาระบบใช้ในองค์กรทั้งภาครัฐและเอกชน เป็นพาร์ทเนอร์กับบริษัททางด้าน Digital Agency เพื่อพัฒนาโปรเจคให้แก่ลูกค้า ทักเข้ามาพูดคุยกันก่อนได้เลยครับ

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

Backup ฐานข้อมูลด้วย Laravel อย่างง่าย ๆ ด้วย Spatie DB Snapshots
6 มีนาคม 2564
Backup ฐานข้อมูลด้วย Laravel อย่างง่าย ๆ ด้วย Spatie DB Snapshots
วิธีการให้ git จดจำ password โดยไม่ต้องระบุใหม่ทุกครั้ง
6 มีนาคม 2564
วิธีการให้ git จดจำ password โดยไม่ต้องระบุใหม่ทุกครั้ง
วิธีการเช็ค Detect Browser ผู้ใช้จาก Laravel
6 มีนาคม 2564
วิธีการเช็ค Detect Browser ผู้ใช้จาก Laravel