อยากทรบวิธีการตรวจสอบความถูกต้องของเลขบัตรประชาชน

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
Ittichai_chupol
PHP VIP Members
PHP VIP Members
Posts: 5410
Joined: 19/09/2018 10:33 am

อยากทรบวิธีการตรวจสอบความถูกต้องของเลขบัตรประชาชน

Post by Ittichai_chupol »

ผมต้องการที่จะสร้างฟังชั้นใน phpbb เพื่อสำหรับการตรวจสอบเลขบัตรประชนครับ
โดยผมได้ดูต้องอย่างแล้วลองทำตามครับจาก https://www.mindphp.com/developer/20-ja ... ะชาชน.html
โดยผมกำหนดเลขบัตรประชนที่เป็นรหัสบัตรจริงๆ
แต่ผมกลับบอกว่าไม่ถูกต้องครับ
อยากทราบว่าพอจะมีตัวอย่าง หรือข้อชี้เเจงไหมครับ


ตัวอย่างโคดที่ผมได้นำมาทดสอบนะครับ

Code: Select all

<?php

$num_id = "********************";
###======================รับค่าจากฟอร์ม==============###
$group_1 = substr($num_id, 0, 1); // หมายเลขกลุ่มที่ 1 ( มี1ตัว )
$group_2 = substr($num_id, 1, 4); // หมายเลขกลุ่มที่ 2 ( มี4ตัว )
$group_3 = substr($num_id, 5, 5); // หมายเลขกลุ่มที่ 3 ( มี5ตัว )
$group_4 = substr($num_id, 10 ,2); // หมายเลขกลุ่มที่ 4 ( มี2ตัว )
$group_5 = substr($num_id, 12, 12); // หมายเลขกลุ่มที่ 5 ( มี1ตัว ) หลักนี้เอาไว้เป็น Check Digit
echo $group_1."<hr>".$group_2."<hr>".$group_3."<hr>".$group_4."<hr>".$group_5."<hr>";
//exit();
//$group_2 = $_POST['group_2'];
//$group_3 = $_POST['group_3'];
//$group_4 = $_POST['group_4'];
//$group_5 = $_POST['group_5'];
### =================== นำค่่าที่ได้จากฟอร์มมาแยกสตริงค์ ==============###
$num1 = $group_1;
$num2 = substr($group_2, 0, 1); // ดึงเอาเลขตัวแรก ของกลุ่มที่สองออกมา
$num3 = substr($group_2, 1, 1); // ดึงเอาเลขตัวที่สอง ของกลุ่มที่สองออกมา
$num4 = substr($group_2, 2, 1); // ดึงเอาเลขตัวที่สาม ของกลุ่มที่สองออกมา
$num5 = substr($group_2, 3, 1); // ดึงเอาเลขตัวที่สี่ ของกลุ่มที่สองออกมา
$num6 = substr($group_3, 0, 1); // ดึงเอาเลขตัวแรก ของกลุ่มที่สามออกมา
$num7 = substr($group_3, 1, 1); // ดึงเอาเลขตัวที่สอง ของกลุ่มที่สามออกมา
$num8 = substr($group_3, 2, 1); // ดึงเอาเลขตัวที่สาม ของกลุ่มที่สามออกมา
$num9 = substr($group_3, 3, 1); // ดึงเอาเลขตัวที่สี่ ของกลุ่มที่สามออกมา
$num10 = substr($group_3, 4, 1); // ดึงเอาเลขตัวที่5 ของกลุ่มที่สามออกมา
$num11 = substr($group_3, 0, 1); // ดึงเอาเลขตัวแรก ของกลุ่มที่สี่ออกมา
$num12 = substr($group_2, 1, 1); // ดึงเอาเลขตัวที่สอง ของกลุ่มที่สี่ออกมา
$num13 = $group_5;

echo $num12;
### ==== เริ่มต้นคำนวณ Step1 : เอาเลข 12 หลักมาคูณกับเลขประจำหลัก ====###

$cal_num1 = $num1 * 13;
$cal_num2 = $num2 * 12;
$cal_num3 = $num3 * 11;
$cal_num4 = $num4 * 10;
$cal_num5 = $num5 * 9;
$cal_num6 = $num6 * 8;
$cal_num7 = $num7 * 7;
$cal_num8 = $num8 * 6;
$cal_num9 = $num9 * 5;
$cal_num10 = $num10 * 4;
$cal_num11 = $num11 * 3;
$cal_num12 = $num12 * 2;

### ==== Step2 : เอาเอาผลลัพธ์ที่ได้ในการคูณแต่ละครั้งมาบวกกัน ====###
$cal_sum = $cal_num1 + $cal_num2 + $cal_num3 + $cal_num4 + $cal_num5 + $cal_num6 + $cal_num7 + $cal_num8 + $cal_num9 + $cal_num10 + $cal_num11 + $cal_num12;

### ==== Step3 : นำผลลัพธ์จาก Step2 มา Mod ด้วย 11 ====###
$cal_mod = $cal_sum % 11;

### ==== Final เอา 11 ตั้งแล้วลบด้วย ค่าที่ได้จากการ Mod ( Step3) ====###
$cal_2 = 11 - $cal_mod;

if ($group_1 <> "" || $group_1 <> "" || $group_1 <> "" || $group_1 <> "" || $group_1 <> "") {

    echo $num13;
    echo $cal_2;
    if ($cal_2 == $num13) {
        echo "หมายเลขบัตรประชาชนนี้ถูกต้อง";
    } else {
        echo "หมายเลขบัตรประชาชนนี้ไม่ถูกต้อง";
    }
}
?>
ขอให้วันนี้เป็นวันที่ดี

Return to “Programming - PHP”

Who is online

Users browsing this forum: Google [Bot] and 7 guests