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