php簡單的身份證驗證代碼分享(php登錄驗證碼代碼)

本文目錄一覽:

php的怎麼用身份證號來做帳號判斷代碼

寫了幾個身份證方面的函數,個人感覺挺有用的,特別是在網絡問卷調查時,對個人信息里的身份證進行驗證很有用,但是應者寥寥,還是收在自己的blog里算了。

<?php

// 計算身份證校驗碼,根據國家標準GB 11643-1999

function idcard_verify_number($idcard_base){

 if (strlen($idcard_base) != 17){ return false; }

 // 加權因子

 $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);

 // 校驗碼對應值

 $verify_number_list = array(’1’, ’0’, ’X’, ’9’, ’8’, ’7’, ’6’, ’5’, ’4’, ’3’, ’2’);

 $checksum = 0;

 for ($i = 0; $i < strlen($idcard_base); $i++){

$checksum += substr($idcard_base, $i, 1) * $factor[$i];

 }

 $mod = $checksum % 11;

 $verify_number = $verify_number_list[$mod];

 return $verify_number;

}

// 將15位身份證升級到18位

function idcard_15to18($idcard){

 if (strlen($idcard) != 15){

return false;

 }else{

// 如果身份證順序碼是996 997 998 999,這些是為百歲以上老人的特殊編碼

if (array_search(substr($idcard, 12, 3), array(’996’, ’997’, ’998’, ’999’)) !== false){

 $idcard = substr($idcard, 0, 6) . ’18’. substr($idcard, 6, 9);

}else{

 $idcard = substr($idcard, 0, 6) . ’19’. substr($idcard, 6, 9);

}

 }

 $idcard = $idcard . idcard_verify_number($idcard);

 return $idcard;

}

// 18位身份證校驗碼有效性檢查

function idcard_checksum18($idcard){

 if (strlen($idcard) != 18){ return false; }

 $idcard_base = substr($idcard, 0, 17);

 if (idcard_verify_number($idcard_base) != strtoupper(substr($idcard, 17, 1))){

return false;

 }else{

return true;

 }

}

?>

其中的$idcard_base是指身份證中的本位碼,本位碼是18位身份證里才有的,也就是18位身份證的前17位,最後一位稱為校驗碼

一般在使用的時候不用直接調用idcard_verify_number(),平時的應用大多是使用後兩個函數,這些函數都沒有關心身份證字符串的格式問題,在調用前自行進行格式檢查。

php登錄系統身份驗證

login.html

form id=”form1″ name=”form1″ method=”post” action=”checklogin.php”

table width=”400″

tr

th width=”27%” scope=”row”用戶名/th

td width=”73%”input name=”user_name” type=”text” id=”user_name” //td

/tr

tr

th scope=”row”密碼/th

tdinput name=”user_pwd” type=”password” id=”user_pwd” //td

/tr

tr

th scope=”row”請填寫答案 /th

tdinput name=”yzm” type=”text” id=”yzm” size=”5″ /

123/td

/tr

tr

td colspan=”2″ scope=”row”div align=”center”

input type=”submit” name=”Submit” value=” 登錄 ” /

/div/td

/tr

/table

/form

checklogin.php

?php

session_start();

require_once(“../include/class/Mysql.class.php”);

require_once(“../include/class/FuncAdmin.class.php”);

require_once(“../include/class/Users.class.php”);

$db = new Mysql();

$db-getConnection(1);

$db-select_db();

$db-query(“set names gb2312”);

$f = new FuncAdmin();

if(!empty($_POST[‘Submit’])){

//判斷登錄

$user_name = $_POST[‘user_name’];

$user_pwd = $_POST[‘user_pwd’];

$yzm = $_POST[‘yzm’];

//加強驗證

//此處很重要但沒寫出呢cxmcook

if(empty($user_name) || empty($user_pwd)){

$f-alert_back(“用戶名與密碼不能為空!”);

}

$user = new Users();

$sql = $user-get_select_sql(” where user_name='”.$user_name.”‘ and user_pwd='”.$user_pwd.”‘ “);

$rs = $db-query($sql);

$row = $db-fetch_array($rs);

//var_dump($row);

//die(“hr”);

$rownum = $db-num_rows($rs);

//die(‘==========’.$rownum);

if( $rownum 0 ){

//$row = $db-fetch_array($rs);

$_SESSION[‘admin’] = ‘admin’;

$_SESSION[‘user_id’] = $row[‘user_id’];

$_SESSION[‘user_name’] = $row[‘user_name’];

$_SESSION[‘user_realname’] = $row[‘user_realname’];

$_SESSION[‘user_last_logintime’] = $row[‘user_last_logintime’];

$_SESSION[‘user_last_loginIp’] = $row[‘user_last_loginIp’];

$_SESSION[‘user_loginnum’] = $row[‘user_loginnum’];

//header(“Location:index.php”);

echo “script

alert(‘登錄成功!”.$_SESSION[‘user_realname’].”‘);

location=’index.php’;

/script”;

}else{

$f-admin_tip(“用戶名或密碼錯誤!”);

}

}

?

使用PHP代碼編寫一個在網頁中強迫用戶進行身份認證的程序語句段

if ($_SERVER[‘PHP_AUTH_USER’]!=’user’ || $_SERVER[‘PHP_AUTH_PW’]!=’123456′) {

      header(‘WWW-Authenticate: Basic realm=”MyFramework Realm”‘);

      header(‘HTTP/1.0 401 Unauthorized’);

      echo “You must enter a valid login ID and password to access this resource.\n”;

      exit;

}

上面的代碼段作用就是強制用戶輸入認證,用戶名跟密碼可以自己設置

如何使用PHP實現身份證是否合法的驗證

function is_idcard( $id ) 

  $id = strtoupper($id); 

  $regx = “/(^\d{15}$)|(^\d{17}([0-9]|X)$)/”; 

  $arr_split = array(); 

  if(!preg_match($regx, $id)) 

  { 

    return FALSE; 

  } 

  if(15==strlen($id)) //檢查15位 

  { 

    $regx = “/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/”; 

  

    @preg_match($regx, $id, $arr_split); 

    //檢查生日日期是否正確 

    $dtm_birth = “19”.$arr_split[2] . ‘/’ . $arr_split[3]. ‘/’ .$arr_split[4]; 

    if(!strtotime($dtm_birth)) 

    { 

      return FALSE; 

    } else { 

      return TRUE; 

    } 

  } 

  else      //檢查18位 

  { 

    $regx = “/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/”; 

    @preg_match($regx, $id, $arr_split); 

    $dtm_birth = $arr_split[2] . ‘/’ . $arr_split[3]. ‘/’ .$arr_split[4]; 

    if(!strtotime($dtm_birth)) //檢查生日日期是否正確 

    { 

      return FALSE; 

    } 

    else

    { 

      //檢驗18位身份證的校驗碼是否正確。 

      //校驗位按照ISO 7064:1983.MOD 11-2的規定生成,X可以認為是數字10。 

      $arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); 

      $arr_ch = array(‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’); 

      $sign = 0; 

      for ( $i = 0; $i  17; $i++ ) 

      { 

        $b = (int) $id{$i}; 

        $w = $arr_int[$i]; 

        $sign += $b * $w; 

      } 

      $n = $sign % 11; 

      $val_num = $arr_ch[$n]; 

      if ($val_num != substr($id,17, 1)) 

      { 

        return FALSE; 

      } //phpfensi.com 

      else

      { 

        return TRUE; 

      } 

    } 

  } 

  

}

php 身份證 正則 檢測是否有效怎麼寫?

你的正則表達式的規則錯了。。當然不能執行啦

這是規則。如果你只是拿來主義,就無視吧。

代碼長篇大論,是對你負責;說真的,百度沒幾個願意自己寫那麼多字的人。我第二程序是自己寫的,試驗過了。可以自動把身份證升級到18位,然後驗證。

正則表達式其實是來自數學的概念,後來加入了編程語言。正則表達式驗證身份證簡單,但是有缺點,你的要求是:驗證出身年月日,很可惜,正則沒辦法驗證的太完善。也就是說只要符合規則就是正確(比如19940939之類的出生年月。。。),所以寫程序就是為了完善它。話說多了= =不採納也沒辦法。我自認為我比樓上的好多了。

?php

$s15=”/^[0-9]{15}$/”;

//15位正則表達式

$s18=”/^[0-9]{6}[1]{1}[9]{1}[0-9]{2}[0-1]{1}[0-9]{1}[0-3]{1}[0-9]{1}[0-9]{3}[0-9X]{1}$/”;

//18位正則表達式

$sid=”18位或者15位身份證”;

if(preg_match($s15,$sid) or preg_match($s18,$sid))

//如果滿足這兩個條件的其中一個,輸出echo

echo ‘ok’;

else

echo ‘no’;

?

簡單不好用,我花了一個小時寫了一個15位轉18位然後自動驗證的函數:

?php

function check($sid)

{

if(strlen($sid)== 15)

//如果是15身份證,進入自動轉換程序,把15位升級到18位

{

$wi=array(‘7′,’9′,’10’,’5′,’8′,’4′,’2′,’1′,’6′,’3′,’7′,’9′,’10’,’5′,’8′,’4′,’2′,’1′);

$sid=substr_replace($sid,19,6,0);

$count=array();

for($i=0;$i18;++$i)

{

@$count[$i]=$sid[$i]*$wi[$i];

}

$sum=array_sum($count)%11;

$zuihou=array(‘1′,’0′,’X’,’9′,’8′,’7′,’6′,’5′,’4′,’3′,’2′);

$sid=substr_replace($sid,$zuihou[$sum],17,0);

//這個sid是18位的。= = 不信你拿自己的身份證(15位)放過來試驗,肯定沒錯。

}

$wi18=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);

$sum2=array();

for($j=0;$j17;$j++)

{

$sum2[$j]=$sid[$j]*$wi18[$j];

}

$sum2=array_sum($sum2)%11;

$yz=array(‘1′,’0′,’X’,’9′,’8′,’7′,’6′,’5′,’4′,’3′,’2′);

if($yz[$sum2] == $sid[17])

//如果最後一位和驗證號一樣,則返回真

return true;

else

return false;

}

$sid=”18位或者15位身份證”;

if(check($sid))

echo ‘是正確的身份證’;

else

echo ‘身份證不正確’;

?

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/257730.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:46
下一篇 2024-12-15 12:46

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變量和數…

    編程 2025-04-29
  • Python簡單數學計算

    本文將從多個方面介紹Python的簡單數學計算,包括基礎運算符、函數、庫以及實際應用場景。 一、基礎運算符 Python提供了基礎的算術運算符,包括加(+)、減(-)、乘(*)、除…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在着手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • Python愛心代碼動態

    本文將從多個方面詳細闡述Python愛心代碼動態,包括實現基本原理、應用場景、代碼示例等。 一、實現基本原理 Python愛心代碼動態使用turtle模塊實現。在繪製一個心形的基礎…

    編程 2025-04-29

發表回復

登錄後才能評論