โดยผมได้ดูต้องอย่างแล้วลองทำตามครับจาก https://www.mindphp.com/developer/20-ja ... ะชาชน.html
โดยผมกำหนดเลขบัตรประชนที่เป็นรหัสบัตรจริงๆ
แต่ผมกลับบอกว่าไม่ถูกต้องครับ
อยากทราบว่าพอจะมีตัวอย่าง หรือข้อชี้เเจงไหมครับ
ตัวอย่างโคดที่ผมได้นำมาทดสอบนะครับ
โค้ด: เลือกทั้งหมด
<?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 "หมายเลขบัตรประชาชนนี้ไม่ถูกต้อง";
}
}
?>