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中函数内引用全局变量的方法
Oct 20 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
Jun 25 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
php在linux下检测mysql同步状态的方法
Jan 15 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 PHP
php头像上传预览实例代码
May 02 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
Aug 01 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
PHP使用openssl扩展实现加解密方法示例
Feb 20 PHP
PHP内存溢出优化代码详解
Feb 26 PHP
PHP并发场景的三种解决方案代码实例
Feb 27 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中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
详解Angular4 路由设置相关
2017/08/26 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
开始着手第一个Django项目
2015/07/15 Python
Python实现截屏的函数
2015/07/25 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
python爬虫爬取淘宝商品信息
2018/02/23 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
django中SMTP发送邮件配置详解
2019/07/19 Python
python定间隔取点(np.linspace)的实现
2019/11/27 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python中常用的数据结构介绍
2021/01/12 Python
欧洲著名的珠宝和手表网上商城:uhrcenter
2017/04/10 全球购物
北美个性化礼品商店:Things Remembered
2018/06/12 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
程序集与命名空间有什么不同
2014/07/25 面试题
C#公司笔试题
2014/03/28 面试题
静心口服夜广告词
2014/03/20 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
大学运动会加油稿
2015/07/22 职场文书
大学体育课感想
2015/08/10 职场文书