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 相关文章推荐
Smarty模板快速入门
Jan 04 PHP
逐步提升php框架的性能
Jan 10 PHP
php中利用post传递字符串重定向的实现代码
Apr 21 PHP
PHP删除数组中特定元素的两种方法
Jul 02 PHP
PHP基于GD库的缩略图生成代码(支持jpg,gif,png格式)
Jun 19 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
php以post形式发送xml的方法
Nov 04 PHP
Symfony模板的快捷变量用法实例
Mar 17 PHP
thinkphp跨库操作的简单代码实例
Sep 22 PHP
php插入mysql数据返回id的方法
May 31 PHP
php如何比较两个浮点数是否相等详解
Feb 12 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 addslashes 函数详细分析说明
2009/06/23 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP页面输出搜索后跳转下一页的处理方法
2016/09/30 PHP
IE FF OPERA都可用的弹出层实现代码
2009/09/29 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
javascript ajax的5种状态介绍
2014/08/18 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
Lab.js初次使用笔记
2015/02/28 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
React之PureComponent的使用作用
2018/07/10 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
python正则表达式re模块详解
2014/06/25 Python
Python实现的简单计算器功能详解
2018/08/25 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
PyQt5实现从主窗口打开子窗口的方法
2019/06/19 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
Python同时处理多个异常的方法
2020/07/28 Python
python归并排序算法过程实例讲解
2020/11/04 Python
HTML5地理定位实例
2014/10/15 HTML / CSS
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
医生自荐信
2013/10/11 职场文书
银行职员思想汇报
2013/12/31 职场文书
优秀教师获奖感言
2014/01/31 职场文书
2014年班组工作总结
2014/11/20 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS
Java代码规范与质量检测插件SonarLint的使用
2022/08/05 Java/Android
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技