มาดูวิธีเช็ค ว่า “เขามั่วรหัสประชาชนรึเปล่า?”


200910 Jun

มาดูวิธีเช็ค ว่า “เขามั่วรหัสประชาชนรึเปล่า?”

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

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

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

  • ขั้นตอนที่ 1 - เอาเลข 12 หลักมา เขียนแยกหลักกันก่อน (หลักที่ 13 ไม่ต้องเอามานะคร้าบ)
    1 2 0 1 5 4 1 4 6 2 2 3
  • ขั้นตอนที่ 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
    ผลคูณ 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 มา เป็นต้น)

ในเมื่อรู้วิธีแล้ว เรามาเขียนโปรแกรมตรวจสอบกันดีกว่า

ผมเขียนไว้ให้หลายภาษาเหมือนกัน ให้เพื่อนๆ เลือกใช้ได้ตามสะดวกนะครับ

Version Javascript

<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>
<form>
รหัสประจำตัวประชาชน :
<input name="txtID" type="text" />
<input type="submit" value="ตรวจสอบ" />
</form>

Version PHP

<?
function checkID($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;
}
?>
<form action="?" method="get">
รหัสประจำตัวประชาชน :
<input name="txtID" type="text" />
<input type="submit" value="ตรวจสอบ" />
</form>
<?
if(isset($_GET['txtID'])) {
    if(checkID($_GET['txtID']))
        echo "รหัสถูกต้องครับ";
    else
        echo "รหัสที่คุณกรอกไม่ถูกต้องค"; รับ
}
?>

Version ASP 3

<%
Function checkID(id)
    checkID = False
    If Len(id) = 13 Then
        Dim i, sum
        For i = 1 To 12
            sum = sum + CInt(Mid(id, i, 1))*(14-i)
        Next
        If (11-(sum Mod 11)) Mod 10 = CInt(Mid(id, i, 13)) Then
            checkID = True
        End If
    End If
End Function
%>
<form action="?" method="get">
รหัสประจำตัวประชาชน :
<input name="txtID" type="text" />
<input type="submit" value="ตรวจสอบ" />
</form>
<%
If Request("txtID") &lt;&gt; "" Then
    If checkID(Request("txtID")) Then
        Response.Write "รหัสถูกต้องครับ"
    Else
        Response.Write "รหัสที่คุณกรอกไม่ถูกต้องครับ"
    End If
End If
%>

แหล่งที่มีหลายแหล่งมากแต่ได้นำเนื้อหามาจาก Link ด้านล่างนี้ คนที่เป็น Original จริง ๆ ไม่ทราบว่าใครเป็นคนเขียนคนแรก แต่อย่างไรก้อทำให้เกิดประโยชน์ ขอบคุณแหล่งที่มาของบทความนี้ :http://nattster.siamdev.net/2006/09/id-verification/

หมวดหมู่สินค้า

ขายหูฟัง Sennheiser CX500, Sennheiser CX300 , Sennheiser MM50, Monster Beats , Bose in ear
รับ Preorder หูฟังจากต่างประเทศ

Earphone
(20)

รวม หูฟังทุกรุ่นต่าง ๆ ใน Shop

Sennheiser
(7)

ขาย หูฟัง Sennheiser CX500,ขาย หูฟัง Sennheiser CX300, ขาย หูฟัง Sennheiser MM50

AKG
(3)

หูฟัง AKG ใน Shop

Creative
(1)

หูฟัง Creative ใน shop

DIY
(4)

DVD และ VCD การสอนต่างๆและเรียนรู้ต่างๆด้วยด้วยตัวเอง

Bose
(1)

รวมหูฟังยี่ห้อ Bose

Bluetooth stereo
(5)

รวมหูฟัง อุปกรณ์ บูลทูธ ต่าง ๆ
และ หูฟังบูลทูธสเตอริโอสำหรับฟังเพลง

Finger Style Guitar
(7)

รวม DVD แนวเพลง Finger Style Guitar ต่างๆ

fingerstyle
(3)

DVD และ VCD เพลงแนว Finger Style Guitar

Tommy Emmanuel
(3)

รวมงานเพลง Tommy Emmanuel
แนว Finger Style Guitar

pair bluetooth
(1)

วิธีการ Pair อุปกรณ์ Bluetooth ต่าง ๆ

SMF
(2)

บทความและความรู้ด้านการพัฒนาเว็บไซต์

css
(11)

บทความเกี่ยวกับ CSS, เทคนิคต่าง ๆในการใช้ CSS เรียนรู้การแก้ไขต่าง ๆ

css hack
(4)

บทความเกี่ยวกับ CSS, เทคนิคในการปัญหา cross browser ในการแสดงผลของ browser ที่แตกต่าง ๆ กัน

drupal
(12)

บทความเกี่ยว Drupal แนะนำการใช้งาน Drupal และเทคนิคต่างๆในการใช้งาน

javascript
(13)

บทความเกี่ยว Javascript แนะนำการใช้งานวิธีแก้ไขต่างๆ

JSON
(1)
php
(4)
SEO
(3)
Web Tools
(3)

แนะนำเครื่องมือสำหรับพัฒนาเวบไซต์

Who's online

There are currently 1 user and 5 guests online.

Online users

ขายหูฟัง Sennheiser CX500, Sennheiser CX300 , Sennheiser MM50, Monster Beats , Bose in ear
รับ Preorder หูฟังจากต่างประเทศ

หน้าแรก Shop
(41)

หน้าแรกของ Shop