ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => หัวข้อเริ่มโดย: googlerich ใน 22 เมษายน 2011, 12:44:08

ชื่อเรื่อง: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: googlerich ใน 22 เมษายน 2011, 12:44:08
เอาฟังชั่น ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ

<?
function checkPID($pid) {
   if(strlen($pid) != 13) return false;
      for($i=0, $sum=0; $i<12;$i++)
      $sum += (int)($pid{$i})*(13-$i);
      if((11-($sum%11))%10 == (int)($pid{12}))
      return true;
   return false;
}

?>
<form action="?" method="get">
หมายเลขบัตรประชาชน : <input type="text" name="txtID" />
<input type="submit" value="ตรวจสอบ" />
</form>

<?
if(isset($_GET['txtID'])) {
   if(checkPID($_GET['txtID']))
   echo "รหัสถูกต้องครับ";
   else
   echo "หมายเลขบัตรประชาชนของท่านไม่ถูกต้อง";
}

?>
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: NaiTan ใน 22 เมษายน 2011, 12:51:17
ตรวจยังไงครับ ตรวจแล้วได้ผลอะไร ใช้หลักการอะไรตรวจ อธิบายเพิ่มหน่อยครับ ดูจากโค้ดแล้วไม่ค่อยเกจนะ  :(
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: ru ใน 22 เมษายน 2011, 12:53:23
ทำไมผมดูจากที่ให้มา ผมไม่ค่อยเข้าใจเลยครับ
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: NaiTan ใน 22 เมษายน 2011, 12:55:36
อ้างถึงจาก: ru ใน 22 เมษายน 2011, 12:53:23
ทำไมผมดูจากที่ให้มา ผมไม่ค่อยเข้าใจเลยครับ
ใช่ จะรู้ได้ไงว่าหมายเลขนั้นมีจริง และถูกต้อง ไม่เห็๋นมีเชื่อมต่อไปเช็คกับฐานข้อมูลอะไรเลย
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: pollok ใน 22 เมษายน 2011, 12:57:55
น่าจะเป็นการเช็ค Digit
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: googlerich ใน 22 เมษายน 2011, 13:00:16
อ้างถึงจาก: pollok ใน 22 เมษายน 2011, 12:57:55
น่าจะเป็นการเช็ค Digit

ถูกต้องครับ เช็ค format ของเลขบัตร ไม่ได้เชื่อมเช็คฐานข้อมูล
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: ThaNaButS ใน 22 เมษายน 2011, 13:01:40
อ้างถึงจาก: googlerich ใน 22 เมษายน 2011, 13:00:16
อ้างถึงจาก: pollok ใน 22 เมษายน 2011, 12:57:55
น่าจะเป็นการเช็ค Digit

ถูกต้องครับ เช็ค format ของเลขบัตร ไม่ได้เชื่อมเช็คฐานข้อมูล
คับ ตัวเลขสำหรับตรวจสอบความถูกต้องของเลขทั้ง 12 หลักแรก เท่านั้นคับ
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: NaiTan ใน 22 เมษายน 2011, 13:03:17
อ้างถึงจาก: googlerich ใน 22 เมษายน 2011, 13:00:16
อ้างถึงจาก: pollok ใน 22 เมษายน 2011, 12:57:55
น่าจะเป็นการเช็ค Digit

ถูกต้องครับ เช็ค format ของเลขบัตร ไม่ได้เชื่อมเช็คฐานข้อมูล
ใช่ ผมก็เข้าใจว่าเช็ค format อย่างเดียว
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: googlerich ใน 22 เมษายน 2011, 13:11:09
หรือถ้าต้องการเช็คในขั้นต้น โดยใช้ php ก็ตามด้านล่างนี้เลยคับ  เป็นหารเช็คตามสูตร
###======================รับค่าจากฟอร์ม==============###
$group_1=$_POST['group_1']; // หมายเลขกลุ่มที่ 1 ( มี1ตัว )
$group_2=$_POST['group_2']; // หมายเลขกลุ่มที่ 2 ( มี4ตัว )
$group_3=$_POST['group_3']; // หมายเลขกลุ่มที่ 3 ( มี5ตัว )
$group_4=$_POST['group_4']; // หมายเลขกลุ่มที่ 4 ( มี2ตัว )
$group_5=$_POST['group_5']; // หมายเลขกลุ่มที่ 5 ( มี1ตัว ) หลักนี้เอาไว้เป็น Check Digit


### =================== นำค่่าที่ได้จากฟอร์มมาแยกสตริงค์ ==============###
$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;


### ==== เริ่มต้นคำนวณ 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<>"" ) {

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

?>

ข้างบน อันนี้ผมเก็บไว้นานแล้ว ไม่รู้เอามาจากไหน ต้องขออภัยแหล่งที่มาด้วยที่ไม่ได้ป้อนเครดิตครับ


ส่วนลิงค์ข้างล่างนี้ เป็นโปรแกรมเช็ค หมายเลขบัตรประจำตัวประชาชน โดยใช้ webservice ของกรมสรรพากร (เช็คได้ถูกต้อง 100%)
http://www.thainaturecure.com/PIN/PIN.php
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: bomload ใน 22 เมษายน 2011, 13:26:58
ใช่ครับ เขาไม่ได้เช็คจากฐานข้อมูลหรอก
แค่มาให้เช็คว่าคุณกรอกนั้นจริงหรือป่าว เพราะจะเอาตัวเลขสุดท้ายว่าถูกต้องหรือไม่
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: phone1246 ใน 28 สิงหาคม 2012, 04:17:20
ขอบคุณครับ

แล้วมีวิธีเช็คกับ ข้อมูลของภาครัฐไหมครับ  :wanwan003:
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: xvlnw.com ใน 28 สิงหาคม 2012, 06:03:29
แจ่มเลยครับ เขียนได้สั้นดีเลยทีเดียว
Bookmark ไว้ซักหน่อย ^__^
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: Queue ใน 28 สิงหาคม 2012, 06:48:07
ขอบคุณคับ

หมายเลขบัตรประชาชน เช็คได้แค่ความถูกต้องเท่านั้น

แต่จะเช็คจากฐานข้อมูลจริง ไม่ได้เพราะข้อมูลเป็นความลับ

ดังนั้นวิธ๊นี้จึงเป็นวิธ๊ที่ดีที่สุด (มั้ง)
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: krusnai ใน 28 สิงหาคม 2012, 06:53:27
ขอบคุณครับ  :wanwan017: :wanwan017:
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: search_ie ใน 28 สิงหาคม 2012, 06:56:41
ขอบคุณมากครับผม  :wanwan017:
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: Cosmo ใน 28 สิงหาคม 2012, 08:05:15
ขอบคุณครับ :wanwan017:
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: sawit ใน 28 สิงหาคม 2012, 08:12:35
เพื่ออะไร
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: arizonas ใน 28 สิงหาคม 2012, 09:39:43
ใช้ได้ดี ครับ พอจะช่วยกรอง คนสมัครได้บ้าง
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: Unlocker ใน 28 สิงหาคม 2012, 09:55:33
ขอบคุณครับ ไงขอเก็บไว้ก่อน วันหน้าเผื่อจะได้ใช้
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: Fallen ใน 28 สิงหาคม 2012, 09:59:58
อ้างถึงจาก: googlerich ใน 22 เมษายน 2011, 12:44:08
เอาฟังชั่น ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ

<?
function checkPID($pid) {
   if(strlen($pid) != 13) return false;
      for($i=0, $sum=0; $i<12;$i++)
      $sum += (int)($pid{$i})*(13-$i);
      if((11-($sum%11))%10 == (int)($pid{12}))
      return true;
   return false;
}

?>
<form action="?" method="get">
หมายเลขบัตรประชาชน : <input type="text" name="txtID" />
<input type="submit" value="ตรวจสอบ" />
</form>

<?
if(isset($_GET['txtID'])) {
   if(checkPID($_GET['txtID']))
   echo "รหัสถูกต้องครับ";
   else
   echo "หมายเลขบัตรประชาชนของท่านไม่ถูกต้อง";
}

?>

+  :wanwan002:
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: asnowman ใน 28 สิงหาคม 2012, 10:12:11
ขอเก็บไว้ก่อนเผื่อไปใช้ :wanwan017:
ชื่อเรื่อง: Re: เอาฟังชั่น PHP ตรวจสอบหมายเลขบัตรประชาชนมาฝากครับ
โพสต์โดย: dazzleii ใน 28 สิงหาคม 2012, 11:09:48
ขอบคุณคับ :-[