การตรวจสอบรหัสบัตรประชาชน จัดทำโดย : first พิมพ์
 Untitled Document การตรวจสอบรหัสบัตรประชาชน

เวลาจะตรวจสอบว่าข้อมูลที่กรอกมาถูกต้องรึเปล่า จะต้องคำนวณ Check Digit จากเลขหลักอื่นๆ
เพื่อเปรียบเทียบกับ Check Digit ที่กรอกมาว่าตรงกันมั้ย ถ้าตรงกันก็แสดงว่าข้อมูลถูกต้องไม่ผิด ไม่มั่ว
แต่ถ้าไม่ตรงกัน ก็แปลว่า ข้อมูลที่กรอกมามีข้อมูลซักหลัก หรือ สองหลักที่ผิด ก็สามารถเตือนให้ผู้ใช้ทราบและกรอกใหม่
อีกครั้งได้

Check Digit คืออะไรหนอ ?

Check Digit เป็นตัวเลข 1 หลัก ที่เกิดจากการนำเลขหลักอื่นๆ มา บวก ลบ คูณ หาร กัน และ
Check Digit นี่หละครับ จะช่วยใหตรวจสอบในเบื้องต้นได้ว่า ข้อมูลที่กรอกมาถูกต้องรึเปล่า

รหัสประจำตัวประชาชน (ขอเรียกสั้นๆว่า รหัสประชาชน) ทจะมาตรวจกันวันนี้เป็นรหัสประชาชน
ของคนไทย ก่อนอื่น ให้เพื่อนๆ หยิบบัตรประชาชนของเพื่อนๆ ขึ้นมาดูกันเลยครับ

รหัสประจำตัวจะอยู่ในรูป x-xxxx-xxxxx-xx-x (เลข 13 หลัก) แต่รู้ป่ะว่า รหัสประจำตัวจริงๆแล้วมีแค่ 12 หลักเท่านั้น (12 หลักแรก) แต่เลขตัวสุดท้ายเนี่ย เป็น Check Digit ครับ

ตัวอย่างรหัสประชาชน

1-2015-41462-23-4 Check Digit ของรหัสประชาชนนี้คือเลข 4 (เลขตัวสุดท้าย)

ขั้นตอนที่ 1 เอาเลข 12 หลักมา เขียนแยกหลักกันก่อน (หลักที่ 13 ไม่ต้องเอามา)
จะได้ 120154146223
ขั้นตอนที่ 2 เอาเลข 12 หลักนั้นมา คูณเข้ากับเลขประจำหลักของมัน รหัสบัตร 1 2 0 1 5 4 1 4 6 2 2 3 ตัวคูณ 13 12 11 10 9 8 7 6 5 4 3 2
จะได้ 1*13+2*12+0*11+1*10+5*9+4*8+1*7+4*6+6*5+2*4+2*3+3*2 ผลคูณ 13+24+0+10+45+32+7+24+30+8+6+6
ขั้นตอนที่ 3 เอาผลคูณทั้ง 12 ตัวมา บวกกันทั้งหมด จะได้ 13+24+0+10+45+32+7+24+30+8+6+6=205
ขั้นตอนที่ 4 เอาเลขที่ได้จากขั้นตอนที่ 3 มา mod 11 (หารเอาเศษ) จะได้ 205 mod 11 = 7
ขั้นตอนที่ 5 เอา 11 ตั้ง ลบออกด้วย เลขที่ได้จากขั้นตอนที่ 4 จะได้ 11-7 = 4 (จะได้ 4 เป็นเลขในหลัก Check Digit)
ถ้าเกิด ลบแล้วได้ออกมาเป็นเลข 2 หลัก ให้เอาเลขในหลักหน่วยมาเป็น Check Digit (เช่น 11 ให้เอา 1 มา, 10 ให้เอา 0 มา เป็นต้น)

ลองมาดูโปรแกรมกันดีกว่า สร้างไฟล์ชื่อ checkidcard.html พิมพ์โค้ดดังนี้นะครับ
1.เอาโค้ดส่วนนี้ไปวางในส่วนของ Head

<script language="javascript">
function checkID(id)
{
if(id.length != 13) return false;
for(i=0, sum=0; i < 12; i++)
sum += parseFloat(id.charAt(i))*(13-i); if((11-sum%11)%10!=parseFloat(id.charAt(12)))
return false; return true;}

function checkForm()
{ if(!checkID(document.form1.txtID.value))
alert('รหัสประชาชนไม่ถูกต้อง');
else alert('รหัสประชาชนถูกต้อง เชิญผ่านได้');}
</script>


2.เอาโค้ดส่วนนี้ไปวางในส่วนของ Body

<form name="form1" onsubmit="checkForm(); return false;">
รหัสประจำตัวประชาชน : <input type="text" name="txtID" />
<input type="submit" value="ตรวจสอบ" />
</form>


3.ทดลองโปรแกรมได้ที่นี่เลยนะครับ

รหัสประจำตัวประชาชน :  
หมายเหตุ เราได้เรียนรู้วิธีการตรวจสอบเบื้องต้น (ข้อย้ำว่าเบื้องต้น) เพราะรหัสประชาชนที่ผู้ใช้กรอก อาจมี Check Digit ที่ถูกต้อง แต่อาจเป็นรหัสประชาชนที่ไม่มีอยู่จริงก็ได

ที่มา : WattaR จาก http://www.widcom-nu.com/forums/index.php?showtopic=253&mode=threaded

คุณอาจสนใจ
การใช้คำสั่ง แบบ if...else
Mr.POP (83,373 - 26 พ.ย. 50)
สำรวจให้แน่ใจว่าใน flash drive มีไวรัสอยู่หรือไม่?
junko (30,032 - 15 มี.ค. 51)
เทคนิคการสร้างงานเว็บกับ Adobe ImageReady CS (ตอนที่ 1)
สหรัถ แซ่ตั้ง (48,198 - 06 ต.ค. 50)
บล็อกอีเมล์ขยะง่ายนิดเดียว (Vista)
สายลม (15,010 - 22 มี.ค. 51)
วิธีเพิ่ม Undo ใน PowerPoint
หมูขุน (19,011 - 06 ต.ค. 50)
ฟังก์ชั่นคืออะไร
สายลม (35,938 - 15 มี.ค. 51)
การ Convert ระหว่าง char* กับ int ใน C
langjuko (52,119 - 19 ก.ย. 51)
เทคนิคการทำไฟล์ config.inc.php
Mr.GuruZ (43,724 - 03 มิ.ย. 49)