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(),平時的應用大多是使用後兩個函數

這些函數都沒有關心身份證字符串的格式問題,在調用前自行進行格式檢查

 
ASP身份證驗證代碼函數
Function CheckCardId(e) arrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",") Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",") Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",") If Len(e) &l...查看完整版>>ASP身份證驗證代碼函數
 
PHP中使用crypt()實現用戶身份驗證
  在開發PHP應用中如果不想自己開發新的加密算法,還可以利用PHP提供的crypt()函數來完成單向加密功能。  了解crypt()  只要有一點使用非Windows平台經驗的讀者都可能對crypt()相當熟悉,這一函數完成被稱作單...查看完整版>>PHP中使用crypt()實現用戶身份驗證
 
用PHP寫的身份證驗證程序
  寫了幾個身份證方面的函數,個人感覺挺有用的,特別是在網絡問卷調查時,對個人信息裏的身份證進行驗證很有用,但是應者寥寥,還是收在自己的blog裏算了。 <?php// 計算身份證校驗碼,根據國家標准GB 11643-199...查看完整版>>用PHP寫的身份證驗證程序
 
用正則表達式函數驗證身份證號碼合法性
身份證號碼驗證函數: CREATE OR REPLACE FUNCTION fn_checkidcard (p_idcard IN VARCHAR2) RETURN INTIS v_regstr VARCHAR2 (2000); v_sum NUMBER; v_mod NUMBER; v_checkcode CH...查看完整版>>用正則表達式函數驗證身份證號碼合法性
 
身份證號碼驗證函數
Function CheckIDCard(sStr, ByVal dDate, ByVal nSex)?CheckIDCard = "False"?If IsNull(sStr) Or sStr = "" Then Exit Function?If Not IsDate(dDate) Or dDate = "" Then Exit Function?If Not IsNumeric(nSex) O...查看完整版>>身份證號碼驗證函數