Thai ID Format Validation การตรวจสอบ หมายเลขประจำตัวประชาชน แบบเบื้องต้น

หลายครั้งที่ Registration form ต้องมีการรับหมายเลขประจำตัวประชาชนของผู้ใช้ โดยเลข 13 หลักเนี่ย หลักสุดทายจะเป็น check bit ครับ ทำให้เราพอจะเขียนโปรแกรมกรอง id ที่มั่วๆออกไปได้พอสมควร

สำหรับที่มานั้น ผมหาไม่เจอจริงๆครับ เพราะมีคนส่งให้อีกที แต่เคยผ่านตาตามเวปหน่วยงานของรัฐนี่ล่ะครับ

หลักที่ 1 หมายถึงประเภทบุคคลซึ่งมี 8 ประเภท คือ
ประเภทที่ 1 ได้แก่ คนที่เกิดและมีสัญชาติไทย ได้แจ้งเกิดภายในกำหนดเวลา (ตั้งแต่ 1 มกราคม 2527)
ประเภทที่ 2 ได้แก่ คนที่เกิดและมีสัญชาติไทย ได้แจ้งเกิดเกินกำหนดเวลา (ตั้งแต่ 1 มกราคม 2527)
ประเภทที่ 3 ได้แก่ คนไทยและคนต่างด้าวที่มีใบสำคัญประจำตัวคนต่างด้าว และมีที่อยู่ในทะเบียนบ้าน ในสมัยเริ่มแรก (1 มกราคม – 31 พฤษภาคม 2527)
ประเภทที่ 4 ได้แก่ คนไทยและคนต่างด้าวที่มีใบสำคัญคนต่างด้าวแต่แจ้งย้ายเข้า โดยยังไม่มีเลขประจำตัวประชาชนในสมัยเริ่มแรก (1 มกราคม – 31 พฤษภาคม 2527)
ประเภทที่ 5 ได้แก่ คนไทยที่ได้รับอนุมัติให้เพิ่มชื่อเข้าในทะเบียนบ้านในกรณีตกสำรวจหรือกรณีอื่น ๆ
ประเภทที่ 6 ได้แก่ ผู้ที่เข้าเมืองโดยไม่ชอบด้วยกฏหมาย และผู้ที่เข้าเมืองโดยชอบด้วยกฏหมาย แต่จะอยู่ในลักษณะชั่วคราว
ประเภทที่ 7 ได้แก่ บุตรของบุคคลประเภทที่ 6 ซึ่งเกิดในประเทศไทย
ประเภทที่ 8 ได้แก่ คนต่างด้าวที่เข้าเมืองโดยถูกต้องตามกฏหมาย คือ ได้รับใบสำคัญประจำตัวคนต่างด้าว คนที่ได้รับการแปลงสัญชาติเป็นสัญชาติไทย และคนที่ได้รับการให้สัญชาติไทย

หลักที่ 2 ถึงหลักที่ 5 หมายถึงรหัสของสำนักทะเบียนที่ท่านมีชื่อในทะเบียนบ้านในขณะให้เลข สำหรับเด็กเกิดใหม่จะหมายถึงถิ่นที่เกิดเลยทีเดียว โดยหลักที่ 2 และ 3 หมายถึงจังหวัด หลักที่ 4 และ 5 หมายถึงอำเภอ หรือเทศบาล

หลักที่ 6 ถึงหลักที่ 10 หมายถึงกลุ่มที่ของบุคคลแต่ละประเภทตามหลักแรก หรือหมายถึงเล่มที่ ของสูติบัตร แล้วแต่กรณี

หลักที่ 11 และ 12 หมายถึงลำดับที่ของบุคคลในแต่ละกลุ่มประเภท หรือหมายถึงใบที่ของสูติบัตรแต่ละเล่ม แล้วแต่กรณี

หลักที่ 13 คือ ตัวเลขตรวจสอบความถูกต้องของเลข 12 หลักแรก

สูตรการ Gen เลขบัตรประชาชน

1. คูณตัวเลขในแต่ละหลัก
byte1 * 13
byte2 * 12
byte3 * 11
byte4 * 10
byte5 * 9
byte6 * 8
byte7 * 7
byte8 * 6
byte9 * 5
byte10 * 4
byte11 * 3
byte12 * 2
2. รวมยอดทั้งหมดที่คูณกันในแต่ละหลัก
3. หารด้วย 11
4. เหลือเศษเท่าไหร่เอาไปลบออกจาก 11

ตัวอย่าง 310210161558X
(3*13)+(1*12)+(0*11)+(2*10)+(1*9)+(0*+(1*7)+(6*6)+(1*5)+(5*4)+(5*3)+(8*2) = 179
179 หาร 11 เหลือเศษ 3
เอาเศษ 3 ไปลบ 11 จะได้เลขตัวสุดท้ายคือ 8 ครับ

October 10th, 2007
ขอแก้ไขเพิ่มเติมครับ เอาเศษ 3 ไปลบ 11 จะได้เลขตัวสุดท้ายคือ 8 อันนี้ไม่ถูกเสียทีเดียว ต้องนำเลขที่ได้ไปหาร 10 แล้วจึงเอาเศษที่ได้ไปเป็นเลขตัวสุดท้ายครับ :D

About these ads

2 Comments

  1. ดีเพราะเวลาจำหมายเลขบัตรประจำตัวประชาชนไม่ได้ก็ทำให้หาเจอได้ง่าย

  2. ดีเพราะเวลาจำหมายเลขบัตรประจำตัวประชาชนไม่ได้ก็ทำให้กลับมาจำได้


Comments RSS TrackBack Identifier URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.