เมื่อเรากำลังสร้างเว็บไซต์อินเทอร์เน็ตเรามักจะใช้หมายเลขประจำตัวของเราเมื่อลงทะเบียนข้อมูลส่วนบุคคล เราจำเป็นต้องตรวจสอบบัตรประจำตัวประชาชนของเรามิฉะนั้นคนอื่น ๆ จะผ่านมันไปโดยเพียงแค่ป้อนตัวเลขซึ่งทำให้คุณรู้สึกว่าเว็บไซต์นี้ทำขึ้นมามาก
มีกฎสำหรับหมายเลข ID
โครงสร้างและรูปแบบ
1. โครงสร้างของจำนวน
หมายเลขการเป็นพลเมืองเป็นรหัสผสมผสานคุณสมบัติซึ่งประกอบด้วยรหัส ontology สิบเจ็ดหลักและรหัสการตรวจสอบหลักเดียว คำสั่งการจัดเรียงนั้นมาจากซ้ายไปขวา: รหัสที่อยู่หกหลัก, วันเกิดแปดหลัก, รหัสลำดับสามหลักและรหัสการตรวจสอบหลักเดียว
2. รหัสที่อยู่
รหัสแผนกการบริหารของเคาน์ตี (เมืองแบนเนอร์, อำเภอ) ซึ่งมีที่อยู่อาศัยถาวรของวัตถุการเข้ารหัสจะต้องดำเนินการตามบทบัญญัติของ GB/T2260
3. วันเกิดรหัส
มันบ่งบอกถึงปีเดือนและวันเกิดของวัตถุที่เข้ารหัส มันจะถูกดำเนินการตามบทบัญญัติของ GB/T7408 ไม่มีตัวคั่นระหว่างรหัสประจำปีและวัน
4. รหัสลำดับ
มันบ่งชี้ว่าภายในพื้นที่ที่ระบุด้วยรหัสที่อยู่เดียวกันหมายเลขลำดับที่กำหนดให้กับผู้ที่เกิดในปีเดียวกันเดือนและวัน จำนวนคี่ของรหัสลำดับจะถูกกำหนดให้กับผู้ชายและแม้แต่ตัวเลขจะถูกกำหนดให้กับผู้หญิง
5. รหัสการตรวจสอบ
ตามรหัสตัวเลขสิบเจ็ดหลักแรกรหัสการตรวจสอบที่คำนวณตามรหัสการตรวจสอบ ISO 7064: 1983.mod 11-2
วิธีการคำนวณ
1. คูณหมายเลข 17 หลักของหมายเลข ID ก่อนหน้าด้วยค่าสัมประสิทธิ์ที่แตกต่างกัน ค่าสัมประสิทธิ์จากตำแหน่งแรกถึงตำแหน่งที่สิบเจ็ดคือ: 7-9-10-5-8-4-2-1-6-3-7-9-9-10-5-8-4-2-2
2. เพิ่มผลลัพธ์ของการคูณตัวเลขและค่าสัมประสิทธิ์ 17 หลักเหล่านี้
3. ใช้การเพิ่มและหารด้วย 11 เพื่อดูว่าส่วนที่เหลือคืออะไร?
4. ส่วนที่เหลืออาจมีเพียง 11 ตัวเลขเท่านั้น: 0-1-2-3-4-5-6-7-8-9-10 จำนวนบัตรประจำตัวสุดท้ายที่สอดคล้องกับมันคือ 1-0-X-9-8-7-6-5-5-4-3-2
5. จากด้านบนคุณรู้ว่าถ้าส่วนที่เหลือคือ 3 ตัวเลขหลักที่ 18 ของบัตรประจำตัวประชาชนจะปรากฏขึ้น 9 ถ้าหมายเลขที่สอดคล้องกันคือ 2 จำนวนบัตรประจำตัวสุดท้ายคือตัวเลขโรมัน x
ตัวอย่างเช่น: หมายเลข ID ของผู้ชายคือ [53010219200508011x] มาดูกันว่าบัตรประจำตัวนี้เป็นบัตรประจำตัวกฎหมายหรือไม่
ก่อนอื่นเราได้รับผลรวมของผลิตภัณฑ์ของ 17 บิตแรก [(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9) 189 จากนั้นแบ่ง 189 โดย 11 คือ 189/11 = 17 ---- 2 นั่นคือส่วนที่เหลือของตัวเลขคือ 2 ในที่สุดผ่านกฎที่เกี่ยวข้องคุณสามารถรู้ได้ว่ารหัสการตรวจสอบที่สอดคล้องกับส่วนที่เหลือ 2 คือ X ดังนั้นจึงสามารถพิจารณาได้ว่านี่คือหมายเลขรหัสที่ถูกต้อง
ข้างต้นถูกตัดตอนมาจากสารานุกรม Baidu
นี่คือภาพข้อมูลที่เกี่ยวข้องที่พบทางออนไลน์
จากข้อมูลที่รู้จักเราสามารถเขียนการใช้งานภายในของวิธีนี้ใน JS การตรวจสอบ 17 บิตแรกนั้นง่ายต่อการใช้งานดังนั้นฉันจะไม่พูดอะไรมากและมุ่งเน้นไปที่รหัสการตรวจสอบของตัวเลขสุดท้าย
การคัดลอกรหัสมีดังนี้:
// การตรวจสอบหมายเลข ID
ฟังก์ชั่น ISIDCARD (CARDID) {
// Identity Card Expression ปกติ (18 บิต)
var isidcard2 =/^[1-9]/d {5} (19/d {2} | [2-9]/d {3}) ((0/d) | (1 [0-2])) ([0 | 1 | 2]/d) | 3 [0-1])
var stard = "10x98765432"; // จำนวนบัตรประจำตัวสุดท้าย
var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 1-17 สัมประสิทธิ์
var sum = 0;
if (! isidcard2.test (cardid)) {
กลับเท็จ;
-
var year = cardid.substr (6, 4);
var month = cardid.substr (10, 2);
var day = cardid.substr (12, 2);
var วันเกิด = cardid.substr (6, 8);
if (วันเกิด! = datetoString (วันที่ใหม่ (ปี + '/' + เดือน + '/' + วัน))) {// ตรวจสอบว่าวันที่ถูกกฎหมาย
กลับเท็จ;
-
สำหรับ (var i = 0; i <cardid.length - 1; i ++) {
sum += cardid [i] * ก่อน [i];
-
ผลลัพธ์ var = ผลรวม % 11;
var last = stard [ผลลัพธ์]; // หมายเลขรหัสสุดท้ายที่คำนวณ
if (cardid [cardid.length - 1] .touppercase () == ล่าสุด) {
กลับมาจริง;
} อื่น {
กลับเท็จ;
-
-
// วันที่ไปยังสตริงรูปแบบวันที่ส่งคืน 2008080808
ฟังก์ชั่น datetoString (วันที่) {
ถ้า (วันที่อินสแตนซ์ของวันที่) {
var year = date.getlyear ();
var month = date.getMonth () + 1;
เดือน = เดือน <10? '0' + เดือน: เดือน;
var day = date.getDate ();
วัน = วัน <10? '0' + วัน: วัน;
ส่งคืนปี + เดือน + วัน;
-
กลับ '';
-
มีการตรวจสอบบัตรประจำตัวประชาชน 18 หลักเท่านั้นที่นี่และไม่สามารถใช้บัตรประจำตัวรุ่นแรกได้ 15 หลัก
ที่นี่เรายังตรวจสอบความถูกต้องตามกฎหมายของวันที่เช่นวันที่ผิดกฎหมายเช่น 0230, 0431 และการตรวจสอบจะไม่ถูกส่งผ่าน
นอกจากนี้เรายังสามารถเพิ่มวิธีนี้ในการตรวจสอบ jQuery เพื่อการตรวจสอบได้ง่าย
เขียนวิธีการตรวจสอบความถูกต้องของ jQuery ที่กำหนดเอง
การคัดลอกรหัสมีดังนี้:
// การตรวจสอบหมายเลข ID
jQuery.validator.addmethod ("iSidcard"
ฟังก์ชัน (ค่าองค์ประกอบ) {
ส่งคืนสิ่งนี้ optional (องค์ประกอบ) || (ISIDCARD (ค่า));
-
"หมายเลขบัตรประจำตัวเองผิดกฎหมาย!");
มาสาธิตง่ายๆเพื่อดูว่ามันทำงานอย่างไร
การคัดลอกรหัสมีดังนี้:
<! doctype html>
<html>
<head>
<meta http-equiv = "content-type" content = "text /html; charset = utf-8" />
<title>
การยืนยันหมายเลขรหัส
</title>
<script src = "http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js">
</script>
<script src = "http://www.w3cschool.cc/try/demo_source/static/js/jquery.validate.js">
</script>
<script type = "text/javascript">
$ (function () {
$ ("#form1"). ตรวจสอบ ({
กฎ: {
txtidcard: "iSidcard"
-
-
-
// การตรวจสอบหมายเลข ID
ฟังก์ชั่น ISIDCARD (CARDID) {
// Identity Card Expression ปกติ (18 บิต)
var isidcard2 =/^[1-9]/d {5} (19/d {2} | [2-9]/d {3}) ((0/d) | (1 [0-2])) ([0 | 1 | 2]/d) | 3 [0-1])
var stard = "10x98765432"; // จำนวนบัตรประจำตัวสุดท้าย
var first = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 1-17 สัมประสิทธิ์
var sum = 0;
if (! isidcard2.test (cardid)) {
กลับเท็จ;
-
var year = cardid.substr (6, 4);
var month = cardid.substr (10, 2);
var day = cardid.substr (12, 2);
var วันเกิด = cardid.substr (6, 8);
if (วันเกิด! = datetoString (วันที่ใหม่ (ปี+'/'+เดือน+'/'+วัน))) {// ตรวจสอบว่าวันที่ถูกกฎหมาย
กลับเท็จ;
-
สำหรับ (var i = 0; i <cardid.length - 1; i ++) {
sum += cardid [i] * ก่อน [i];
-
ผลลัพธ์ var = ผลรวม % 11;
var last = stard [ผลลัพธ์]; // หมายเลขรหัสสุดท้ายที่คำนวณ
if (cardid [cardid.length - 1] .touppercase () == ล่าสุด) {
กลับมาจริง;
} อื่น {
กลับเท็จ;
-
-
// วันที่ไปยังสตริงรูปแบบวันที่ส่งคืน 2008080808
ฟังก์ชั่น datetoString (วันที่) {
ถ้า (วันที่อินสแตนซ์ของวันที่) {
var year = date.getlyear ();
var month = date.getMonth () + 1;
เดือน = เดือน <10? '0' + เดือน: เดือน;
var day = date.getDate ();
วัน = วัน <10? '0' + วัน: วัน;
ส่งคืนปี + เดือน + วัน;
-
กลับ '';
-
// jQuery ตรวจสอบหมายเลข ID การตรวจสอบ
jQuery.validator.addmethod ("iSidcard"
ฟังก์ชัน (ค่าองค์ประกอบ) {
ส่งคืนสิ่งนี้ optional (องค์ประกอบ) || (ISIDCARD (ค่า));
-
"หมายเลขบัตรประจำตัวเองผิดกฎหมาย!");
</script>
</head>
<body>
<form id = "form1" method = "get" action = "">
<อินพุต type = "text" id = "txtidcard" name = "txtidcard" />>>>>>
<p>
<อินพุตประเภท = "ส่ง" value = "ส่ง" />>>
</p>
</form>
</body>
</html>
ตรวจสอบด้วยหมายเลข ID 53010219200508011X ที่ให้ไว้ในสารานุกรม Baidu
การตรวจสอบสามารถผ่านได้ลองเปลี่ยน x เป็น 0
หากการตรวจสอบล้มเหลววิธีการตรวจสอบที่เราเขียนจะประสบความสำเร็จ! หากคุณไม่เชื่อลองใช้หมายเลขประจำตัวของคุณ ปรากฎว่าฉันใช้ JS เพื่อตรวจสอบหมายเลข ID ง่าย ๆ
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่าคุณจะชอบมัน