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编程语言开发动态WAP页面
Oct 09 PHP
几个学习PHP的网址
Nov 25 PHP
PHP操作XML作为数据库的类
Dec 19 PHP
php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
Apr 07 PHP
php程序的国际化实现方法(利用gettext)
Aug 14 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 PHP
php中生成随机密码的自定义函数代码
Oct 21 PHP
PHP实现的MongoDB数据库操作类分享
May 12 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
php图片添加文字水印实现代码
Mar 15 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
Jul 18 PHP
PHP常见字符串操作函数与用法总结
Mar 04 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
PHP中遇到的时区问题解决方法
2015/07/23 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
2018/05/12 PHP
Javascript实例教程(19) 使用HoTMetal(5)
2006/12/23 Javascript
小议Javascript中的this指针
2010/03/18 Javascript
jquery教程ajax请求json数据示例
2014/01/13 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
简述JavaScript中正则表达式的使用方法
2015/06/15 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
ReactNative-JS 调用原生方法实例代码
2016/10/08 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
ES6数组的扩展详解
2017/04/25 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
2018/01/04 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
python3.5基于TCP实现文件传输
2020/03/20 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python适配器模式代码实现解析
2019/08/02 Python
python列表返回重复数据的下标
2020/02/10 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
校友会欢迎辞
2014/01/13 职场文书
酒店员工检讨书
2014/02/18 职场文书
产假请假条
2014/04/10 职场文书
2014年公务员工作总结
2014/11/18 职场文书
创卫工作总结2015
2015/04/22 职场文书
导游词之山西关帝庙
2019/11/01 职场文书
springboot 自定义配置 解决Boolean属性不生效
2022/03/18 Java/Android