php實(shí)現(xiàn)信用卡校驗(yàn)位算法THE LUHN MOD-10示例
按照ISO 2894中支付卡校驗(yàn)位的算法 The Luhn Mod-10 Method 規(guī)定:
1、對(duì)卡號(hào)上的每位數(shù)字乘以權(quán)重。其規(guī)則是,如果卡號(hào)數(shù)字個(gè)數(shù)是偶數(shù),則第一位乘以2,否則就乘以1,然后以后分別是,1,2,1,2,1,2;
2、如果每位數(shù)字乘以權(quán)重后超過9 ,則需要減去 9;
3、將所有的處理過的加權(quán)數(shù)字求和,用 數(shù)字 10 求模運(yùn)算;
4、余數(shù)應(yīng)該是0,否則可能是輸入錯(cuò)誤。也可能是一個(gè)假號(hào)。
順手PHP簡(jiǎn)單實(shí)現(xiàn)下,實(shí)際場(chǎng)景前端驗(yàn)證好一些,例如JS。
function check_card($card){
if (!is_numeric($card)) return False;
$card_len = strlen($card);
$i = 0;
$num_i = array();
do{
if (!$i){
$num_x = $card_len % 2 ? 1 : 2;
} else {
$num_x = $num_x == 1 ? 2 : 1;
}
$num_i[$i] = (int)$card[$i] * $num_x;
$num_i[$i] = $num_i[$i] > 9 ? $num_i[$i] - 9 : $num_i[$i];
}while(isset($card[++$i]));
$num_sum = array_sum($num_i);
return $num_sum % 10 ? False : True;
}
相關(guān)文章
php實(shí)現(xiàn)當(dāng)前頁面點(diǎn)擊下載文件的簡(jiǎn)單方法
下面小編就為大家?guī)硪黄猵hp實(shí)現(xiàn)當(dāng)前頁面點(diǎn)擊下載文件的簡(jiǎn)單方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09yii2中結(jié)合gridview如何使用modal彈窗實(shí)例代碼詳解
這篇文章主要介紹了yii2中如何結(jié)合gridview使用modal彈窗的相關(guān)資料,需要的朋友可以參考下2016-06-06PHP register_shutdown_function函數(shù)的深入解析
本篇文章是對(duì)PHP register_shutdown_function函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06Laravel 中創(chuàng)建 Zip 壓縮文件并提供下載的實(shí)現(xiàn)方法
這篇文章主要介紹了Laravel 中創(chuàng)建 Zip 壓縮文件并提供下載,本文通過兩個(gè)任務(wù),實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作示例
這篇文章主要介紹了Laravel框架實(shí)現(xiàn)的rbac權(quán)限管理操作,結(jié)合實(shí)例形式分析了Laravel框架權(quán)限控制rbac相關(guān)數(shù)據(jù)庫(kù)創(chuàng)建、讀寫及權(quán)限判斷等操作技巧,需要的朋友可以參考下2019-01-01