การตรวจสอบรหัสบัตรประชาชน

มีเหตุให้ต้องตรวจสอบบัตรประชาชนมาสักระยะ ไม่เห็น code ที่ไหนมีเลย หยิบมัตรมาเช็คดู และคิดว่ามันต้องมี checkdigit แน่ๆ เลยไล่เอาทีละ digit ผลปรากฏว่าได้ นั้นก็คือหลักสุดท้ายของบัตรประชาชน

รหัสบัตรตัวแรก จะใช้ค่า 13เป็นตัวคูณ​ ไล่ไปจนตัวสุดท้าย จะใช่ค่า 2 เรียงมาแบบนี้ตามลำดับ

1. จับตัวคูณไป คูณกับตัวเลขประจำแต่ละหลัก ทีละหลัก แล้วนำผลลัพธ์ของแต่ละหลักมาบวกกัน
2. เสร็จแล้วเอาาผลลัพธ์มา mod ด้วย 11
3. เอา 11 ตั้งแล้วเอาผลลัพธ์ที่ได้จาก (2.) มาลบ ถ้าเกิดเลขเกิดออกมาเป็นสองหลัก ให้เอาหลักหน่วยมาใช้
เช่น 10 ก็เอา 0, 11 ก็เอา 1 มาเป็น checkdigit


function checkPersonID($id) {
if(strlen($id) != 13) return false;
for($i=0,$sum=0; $i<12; $i++) $sum += (int)($id[$i])*(13-$i);
if((11-($sum%11))%10 == (int)($id[12])) return true;
return false;
}

sugree's picture

เฮ้ย อย่าบอกนะว่าแกะเอง เป็นไปได้อย่างไร ยกเว้นว่าจะมี id generator

RTSP's picture

ถ้าแกะเองนี่จะเทพเกินไปแล้วนะครับพี่ 555+

hunt's picture

แกะเองนะ มันก็ไม่ได้ยากอะไรนะ
เคยได้เรียนวิชา data management หรืออะไรสักอย่าง
จะสอนวิธีการ checksum ไว้แล้วลองๆมาแกะดู
ปรากฏว่าเวิคครับ ^ ^

Tanasak's picture

ไม่ทราบว่า คุณดูแลเว็บ zickr.com diaryis.com ใช่ไหมครับ
ผมอยากลง BANNER , TEXT LINK ครับ
อยากทราบรายละเอียด

www.bntbs.com

ธนศักดิ์ ผ่องสุวรรณ
089-170-0152

Post new comment

The content of this field is kept private and will not be shown publicly.
If you have a Gravatar account, used to display your avatar.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.

Recent comments

Add to Technorati Favorites