php实现信用卡校验位算法THE LUHN MOD-10示例


Posted in PHP onMay 07, 2014

按照ISO 2894中支付卡校验位的算法 The Luhn Mod-10 Method 规定:

1、对卡号上的每位数字乘以权重。其规则是,如果卡号数字个数是偶数,则第一位乘以2,否则就乘以1,然后以后分别是,1,2,1,2,1,2;
2、如果每位数字乘以权重后超过9 ,则需要减去 9;
3、将所有的处理过的加权数字求和,用 数字 10 求模运算;
4、余数应该是0,否则可能是输入错误。也可能是一个假号。
 顺手PHP简单实现下,实际场景前端验证好一些,例如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;  
}  
 
PHP 相关文章推荐
PHP 5.0对象模型深度探索之对象复制
Mar 27 PHP
php下载文件的代码示例
Jun 29 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
Jul 05 PHP
PHP中4种常用的抓取网络数据方法
Jun 04 PHP
Yii快速入门经典教程
Dec 28 PHP
[原创]php使用curl判断网页404(不存在)的方法
Jun 23 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP常见数组排序方法小结
Aug 20 PHP
php对称加密算法示例
May 07 #PHP
php实现mysql封装类示例
May 07 #PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 #PHP
php读取3389的脚本
May 06 #PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 #PHP
php通过数组实现多条件查询实现方法(字符串分割)
May 06 #PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 #PHP
You might like
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
2019/02/13 PHP
javascript下操作css的float属性的特殊写法
2007/08/22 Javascript
基于jquery的lazy loader插件实现图片的延迟加载[简单使用]
2011/05/07 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
intro.js 页面引导简单用法 分享
2013/08/06 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
用window.onerror捕获并上报Js错误的方法
2016/01/27 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
2017/04/21 Javascript
JavaScript中附件预览功能实现详解(推荐)
2017/08/15 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
Webpack打包字体font-awesome的方法示例
2018/04/26 Javascript
原生js实现移动端Touch轮播图的方法步骤
2019/01/03 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
基于JS实现快速读取TXT文件
2020/08/25 Javascript
Vue3不支持Filters过滤器的问题
2020/09/24 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
python判断windows隐藏文件的方法
2014/03/21 Python
python字典序问题实例
2014/09/26 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
python实现简易动态时钟
2018/11/19 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
使用python的pexpect模块,实现远程免密登录的示例
2019/02/14 Python
使用Django和Postgres进行全文搜索的实例代码
2020/02/13 Python
tensorflow实现残差网络方式(mnist数据集)
2020/05/26 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
python怎么对数字进行过滤
2020/07/05 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
后勤服务中心总经理工作职责
2014/03/03 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
企业党建工作总结2015
2015/05/26 职场文书
公司酒会主持词
2015/07/02 职场文书