Thursday 19 May 2016

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

 

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


เวลาจะตรวจสอบว่าข้อมูลที่กรอกมาถูกต้องรึเปล่า จะต้องคำนวณ 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

0 ความคิดเห็น:

Post a Comment