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 相关文章推荐
漂亮但不安全的CTB
Oct 09 PHP
隐藏你的.php文件的实现方法
Mar 19 PHP
php设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
php数组函数序列之array_unshift() 在数组开头插入一个或多个元素
Nov 07 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
Jun 29 PHP
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
Sep 28 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
PHP static局部静态变量和全局静态变量总结
Mar 02 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
Thinkphp单字母函数使用指南
May 08 PHP
php往mysql中批量插入数据实例教程
Dec 12 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
Feb 22 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
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
需要做特殊处理的DOM元素属性的访问
2010/11/05 Javascript
JavaScript获取路径设计源码
2014/05/22 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
[47:20]DAC2018 4.4 淘汰赛 Optic vs Mineski 第一场
2018/04/05 DOTA
获取Django项目的全部url方法详解
2017/10/26 Python
python中的常量和变量代码详解
2018/07/25 Python
python 追踪except信息方式
2020/04/25 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
2020/06/02 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
预订从美国飞往印度的机票:MyTicketsToIndia
2017/05/19 全球购物
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
德国孕妇装和婴童服装网上商店:bellybutton
2018/04/12 全球购物
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
美国最大的烧烤架和户外生活用品专业零售商:Barbeques Galore
2021/01/09 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
师范大学毕业自我鉴定
2013/11/21 职场文书
会计求职信
2014/05/29 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
群众路线领导干部个人对照检查材料(集锦)
2014/09/23 职场文书
合同和协议有什么区别?
2014/10/08 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
个人政治思想总结
2015/03/05 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
element tree树形组件回显数据问题解决
2022/08/14 Javascript