ธันวาคม 15, 2018, 06:56:51 PM *
ยินดีต้อนรับคุณ, บุคคลไม่รู้ว่าใคร กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น
หน้า: [1]   ลงล่าง
  พิมพ์  
Script Validate เลขบัตรประชาชนที่ถูกต้อง C#, Java, Java Script  (อ่าน 6305 ครั้ง)
ไร้คอนเซปต์ ******* ออฟไลน์ ออฟไลน์ เพศ: ชาย พลังสะสม: 18055
กรกฎาคม 11, 2012, 11:17:57 AM
ผลงาน: 1730
อาร์ตทูบี
Administrator
ไร้คอนเซปต์
*******

ผลงาน: 1730
ออฟไลน์ ออฟไลน์

เพศ: ชาย
พลังสะสม: 18055


เว็บไซต์
« เมื่อ: กรกฎาคม 11, 2012, 11:17:57 AM »
โค๊ด:
private static bool CheckPID(string pid)
         {
             /*
              * หลักที่ 1 หมายถึงประเภทบุคคลซึ่งมี 8 ประเภท คือ
              * ประเภทที่ 1 ได้แก่ คนที่เกิดและมีสัญชาติไทย
ได้แจ้งเกิดภายในกำหนดเวลา (ตั้งแต่ 1 มกราคม 2527)
              * ประเภทที่ 2 ได้แก่ คนที่เกิดและมีสัญชาติไทย
ได้แจ้งเกิดเกินกำหนดเวลา (ตั้งแต่ 1 มกราคม 2527)
              * ประเภทที่ 3 ได้แก่
คนไทยและคนต่างด้าวที่มีใบสำคัญประจำตัวคนต่างด้าว
และมีที่อยู่ในทะเบียนบ้าน ในสมัยเริ่มแรก (1 มกราคม ? 31 พฤษภาคม 2527)
              * ประเภทที่ 4 ได้แก่
คนไทยและคนต่างด้าวที่มีใบสำคัญคนต่างด้าวแต่แจ้งย้ายเข้า
โดยยังไม่มีเลขประจำตัวประชาชนในสมัยเริ่มแรก (1 มกราคม ? 31 พฤษภาคม 2527)
              * ประเภทที่ 5 ได้แก่
คนไทยที่ได้รับอนุมัติให้เพิ่มชื่อเข้าในทะเบียนบ้านในกรณีตกสำรวจหรือกรณีอื่น

              * ประเภทที่ 6 ได้แก่ ผู้ที่เข้าเมืองโดยไม่ชอบด้วยกฏหมาย
และผู้ที่เข้าเมืองโดยชอบด้วยกฏหมาย แต่จะอยู่ในลักษณะชั่วคราว
              * ประเภทที่ 7 ได้แก่ บุตรของบุคคลประเภทที่ 6
ซึ่งเกิดในประเทศไทย
              * ประเภทที่ 8 ได้แก่
คนต่างด้าวที่เข้าเมืองโดยถูกต้องตามกฏหมาย คือ
ได้รับใบสำคัญประจำตัวคนต่างด้าว คนที่ได้รับการแปลงสัญชาติเป็นสัญชาติไทย
และคนที่ได้รับการให้สัญชาติไทย
              * หลักที่ 2 ถึงหลักที่ 5
หมายถึงรหัสของสำนักทะเบียนที่ท่านมีชื่อในทะเบียนบ้านในขณะให้เลข
สำหรับเด็กเกิดใหม่จะหมายถึงถิ่นที่เกิดเลยทีเดียว โดยหลักที่ 2 และ 3
หมายถึงจังหวัด หลักที่ 4 และ 5 หมายถึงอำเภอ หรือเทศบาล
              * หลักที่ 6 ถึงหลักที่ 10
หมายถึงกลุ่มที่ของบุคคลแต่ละประเภทตามหลักแรก หรือหมายถึงเล่มที่
ของสูติบัตร แล้วแต่กรณี
              * หลักที่ 11 และ 12
หมายถึงลำดับที่ของบุคคลในแต่ละกลุ่มประเภท
หรือหมายถึงใบที่ของสูติบัตรแต่ละเล่ม แล้วแต่กรณี
              * หลักที่ 13 คือ ตัวเลขตรวจสอบความถูกต้องของเลข 12 หลักแรก
              *
              * สูตรการ Gen เลขบัตรประชาชน
              * 1. คูณตัวเลขในแต่ละหลัก
              *      byte1 * 13
              *      byte2 * 12
              *      byte3 * 11
              *      byte4 * 10
              *      byte5 * 9
              *      byte6 * 8
              *      byte7 * 7
              *      byte8 * 6
              *      byte9 * 5
              *      byte10 * 4
              *      byte11 * 3
              *      byte12 * 2
              * 2. รวมยอดทั้งหมดที่คูณกันในแต่ละหลัก
              * 3. นำผลลัพท์ข้อที่ 2 MOD 11
              * 4. นำผลลัพท์ข้อที่ 3 มา ลบ 11
              * 5. นำผลลัพท์ข้อที่ 4 มา Mod 10
              * 6. ถ้าผลลัพท์ตรงกับหลักสุดท้ายของเลขบัตร
แสดงว่าบัตรถูกต้อง
              */


             Regex rexPersonal = new Regex(@"^[0-9]{13}$");
             if (rexPersonal.IsMatch(pid))
             {
                 int sum = 0;

                 /* x13, x12, x11, ... */
                 for (int i = 0; i < 12; i++)
                 {
                     sum += int.Parse(pid[i].ToString()) * (13 - i);
                 }

                 /* complements(12, sum mod 11) */
                 return int.Parse(pid[12].ToString()) == ((11 - (sum %
11)) % 10);
             }
             return false;
         }

โค๊ด:

ในส่วนนี้เป็นต้นฉบับภาษา Java ครับ
/*
   * PIDCheck - Thailand population ID validation engine.
   * Copyright (C) 2005 Shuetrakunpaibun C.
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * For a full copy of GNU Lesser General Public License please
download
   * at http://www.gnu.org/licenses/lgpl.htm
   */
function check_digit_id_card(id_card) {
var multi_num = 13;
var str_digit = 0;
var result = 0;
if(id_card.length != 13) {
return false;
}
while(multi_num != 1) {
if(id_card.charAt(str_digit) == Number.NaN) {
return false;
}
result = result + id_card.charAt(str_digit)*multi_num;
multi_num = multi_num - 1;
str_digit = str_digit + 1;
}

result = result % 11;
if(result == 0) result = 10;

result = 11 - result;

if(result == 10) result = 0;

if(result == id_card.charAt(12)) {
return true;
} else {
return false;
}
}

โค๊ด:
ในส่วนนี้เป็น JavaScript ครับ
function check_digit_id_card(id_card) {
var multi_num = 13;
var str_digit = 0;
var result = 0;
if(id_card.length != 13) {
return false;
}
while(multi_num != 1) {
if(id_card.charAt(str_digit) == Number.NaN) {
return false;
}
result = result + id_card.charAt(str_digit)*multi_num;
multi_num = multi_num - 1;
str_digit = str_digit + 1;
}

result = result % 11;
if(result == 0) result = 10;

result = 11 - result;

if(result == 10) result = 0;

if(result == id_card.charAt(12)) {
return true;
} else {
return false;
}
}



รับจดโดเมน รับฝาก-ดูแลเว็บไซต์ ทำเว็บ เขียนโปรแกรม โฆษณา Google Adwords
พูดคุยเป็นการส่วนตัวคลิ๊กเลยครับ


หน้า: [1]   ขึ้นบน
  พิมพ์  
 
กระโดดไป:  

Powered by MySQL Powered by PHP Valid XHTML 1.0! Valid CSS!