มีเหตุให้ต้องตรวจสอบบัตรประชาชนมาสักระยะ ไม่เห็น 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;
}
By hunt March 18th, 2007










เฮ้ย อย่าบอกนะว่าแกะเอง เป็นไปได้อย่างไร ยกเว้นว่าจะมี id generator
ถ้าแกะเองนี่จะเทพเกินไปแล้วนะครับพี่ 555+
แกะเองนะ มันก็ไม่ได้ยากอะไรนะ
เคยได้เรียนวิชา data management หรืออะไรสักอย่าง
จะสอนวิธีการ checksum ไว้แล้วลองๆมาแกะดู
ปรากฏว่าเวิคครับ ^ ^
ไม่ทราบว่า คุณดูแลเว็บ zickr.com diaryis.com ใช่ไหมครับ
ผมอยากลง BANNER , TEXT LINK ครับ
อยากทราบรายละเอียด
www.bntbs.com
ธนศักดิ์ ผ่องสุวรรณ
089-170-0152
Post new comment