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 相关文章推荐
简单易用的计数器(数据库)
Oct 09 PHP
PHP 柱状图实现代码
Dec 04 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
Jun 23 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
Aug 14 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
CodeIgniter框架数据库基本操作示例
May 24 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 PHP
PHP中number_format()函数的用法讲解
Apr 08 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 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
JObj预览一个JS的框架
2008/03/13 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
jQuery1.6 使用方法一
2011/11/23 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
Javascript操作URL函数修改版
2013/11/07 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
自定义jQuery插件方式实现强制对象重绘的方法
2015/03/23 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
微信小程序 如何保持登录状态
2019/08/16 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python使用Socket(Https)Post登录百度的实现代码
2012/05/18 Python
Python操作sqlite3快速、安全插入数据(防注入)的实例
2014/04/26 Python
Python实现批量修改文件名实例
2015/07/08 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
Python实现的读写json文件功能示例
2018/06/05 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
python统计中文字符数量的两种方法
2019/01/31 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
如何通过python实现IOU计算代码实例
2020/11/02 Python
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
煤矿机修工岗位职责
2014/02/07 职场文书
党员创先争优承诺书
2014/03/26 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
房地产广告策划方案
2014/05/15 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
创优争先心得体会
2014/09/11 职场文书
党员评议思想汇报
2014/10/08 职场文书