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

6 มีนาคม 2564 เวลาอ่าน 5 นาที
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 Application Development ให้แก่องค์กร ธุรกิจ SME และหน่วยงานราชการ
Web Developer ผู้มีใจรักใน Laravel เป็นพาร์ทเนอร์บริษัท Digital Agency ชั้นนำทางด้าน UX/UI เพื่อพัฒนาโปรเจคให้แก่ลูกค้า ผมช่วยสร้างเครื่องมือทางด้าน Web ที่มีคุณภาพให้ผู้ประกอบการดำเนินธุรกิจได้ง่ายขึ้นใช้งานได้จริง เน้นประสบการณ์ ความชำนาญ ผลงานคุ้มค่าเทียบเท่าจ้างงานกับบริษัทใหญ่ ๆ

ยามว่าง ๆ ชอบเล่นเกมส์บน Steam ครับ

เรื่องที่เกี่ยวข้อง

PHP function แสดงขนาดไฟล์แบบคนอ่านรู้เรื่อง เป็น KB, MB, GB
6 มีนาคม 2564
PHP function แสดงขนาดไฟล์แบบคนอ่านรู้เรื่อง เป็น KB, MB, GB
คำสั่ง Postgresql ที่เอาไว้ใช้จัดการเกี่ยวกับ Replication
6 มีนาคม 2564
คำสั่ง Postgresql ที่เอาไว้ใช้จัดการเกี่ยวกับ Replication
สรุป Taylor Otwell Keynote ใน Laracon US 2024 - Inertia 2.0, VS Code Extension และ Laravel Cloud
6 มีนาคม 2564
สรุป Taylor Otwell Keynote ใน Laracon US 2024 - Inertia 2.0, VS Code Extension และ Laravel Cloud