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 危险函数解释 分析
Apr 22 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
PHP文章采集URL补全函数(FormatUrl)
Aug 02 PHP
php FLEA中二叉树数组的遍历输出
Sep 26 PHP
$_GET['goods_id']+0 的使用详解
Jun 06 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
使用PHP生成PDF方法详解
Jan 23 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
thinkphp5框架前后端分离项目实现分页功能的方法分析
Oct 08 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
smarty简单入门实例
2014/11/28 PHP
php中header设置常见文件类型的content-type
2015/06/23 PHP
php简单实现文件或图片强制下载的方法
2016/12/06 PHP
JSChart轻量级图形报表工具(内置函数中文参考)
2010/10/11 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
2013/08/21 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
谈谈PHP中相对路径的问题与绝对路径的使用
2016/08/16 Javascript
angularjs指令之绑定策略(@、=、&)
2017/04/13 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
详解小程序如何改变onLoad的执行时机
2019/11/01 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
2021/02/22 Vue.js
Python中的字典遍历备忘
2015/01/17 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
高中毕业自我鉴定
2013/12/19 职场文书
体育教师个人的自我评价
2014/02/16 职场文书
贷款承诺书范文
2014/05/19 职场文书
大学生作弊检讨书
2014/09/11 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
债务追讨律师函
2015/06/24 职场文书
施工安全协议书
2016/03/22 职场文书
PostgreSQL之连接失败的问题及解决
2023/05/08 PostgreSQL