ホームページ  >  記事  >  バックエンド開発  >  PHP プロフェッショナル ID カードの検証、ID カードの定期的な検証なし_PHP チュートリアル

PHP プロフェッショナル ID カードの検証、ID カードの定期的な検証なし_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:48:41703ブラウズ

以前は、ID カードを検証したい場合、主に正規表現を使用してユーザー入力が 15 桁か 18 桁の完全な番号かを判断し、ID カードが合法かどうかを判断していました。以下に示す ID カードの検証は最も基本的なものにすぎません*。

コードは次のとおりです コードをコピー

$IDCard = 新しい IDCard(); var_dump($IDCard::isCard($_GET['card']));
/**
* IDカード処理
​*/
クラスIDカード {

// ID カードが正しいかどうかを確認します
パブリック静的関数 isCard($card) {
$card = self::to18Card($card); If (strlen($card) != 18) {
false を返します
}

$cardBase = substr($card, 0, 17);
return (self::getVerifyNum($cardBase) == strtoupper(substr($card, 17, 1))); }


//15 桁の ID 番号を 18 桁にフォーマットします
パブリック静的関数 to18Card($card) {
$card = トリム($card);
If (strlen($card) == 18) {
$card を返します。 }

If (strlen($card) != 15) {
false を返します
}

// ID カードのシーケンス コードが 996 997 998 999 の場合、これらは 100 歳以上の人のための特別なコードです
If (array_search(substr($card, 12, 3), array('996', '997', '998', '999')) !== false) {
$card = substr($card, 0, 6) . substr($card, 6, 9); } else {
$card = substr($card, 0, 6) . substr($card, 6, 9); }
$card = $card .self::getVerifyNum($card); $card を返します。 }

// 国家標準 gb 11643-1999 に基づいて ID カード検証コードを計算します
プライベート静的関数 getVerifyNum($cardBase) {
If (strlen($cardBase) != 17) {
false を返します
}
// 重み係数
$factor = 配列(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');

$チェックサム = 0; for ($i = 0; $i $checksum += substr($cardBase, $i, 1) * $factor[$i]; }

$mod = $チェックサム % 11; $verify_number = $verify_number_list[$mod];
$verify_number を返します
}
}

?>





www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632768.html技術記事以前は、ID カードを検証したい場合、主に正規表現を使用してユーザーの入力が 15 桁か 18 桁の完全な番号であるかを判断し、ID カードが合法であるかどうかを判断していました。最も基本的なものだけ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。