php实现用于验证所有类型的信用卡类


Posted in PHP onMarch 24, 2015

本文实例讲述了php实现用于验证所有类型的信用卡类。分享给大家供大家参考。具体如下:

这个php类比较完整,可以用于验证各种不同的信用卡,针对信用卡的卡号的通用规则进行了验证,同时对不同类型的信用卡进行了针对性的识别。
代码接受一个信用卡号码和有效日期,如果两者都有效,则返回TRUE,否则返回FALSE。

本插件接受以下参数:
$number 表示信用卡号码的一个字符串
$expiry 信用卡有效日期,采用07/12或0712这样的格式

<?php
// Plug-in 32: Validate Credit Card
// This is an executable example with additional code supplied
// To obtain just the plug-ins please click on the Download link
$card  = "4567 1234 5678 9101";
$exp  = "06/11";
echo "Validating: $card : $exp<br>";
$result = PIPHP_ValidateCC($card, $exp);
if ($result != FALSE) echo "Card Validated";
else echo "Card did not validate";
function PIPHP_ValidateCC($number, $expiry)
{
  // Plug-in 32: Validate Credit Card
  //
  // This plug-in accepts a credit card number and
  // an expiry date and returns TRUE or FALSE,
  // depending on whether the details pass date
  // and checksum validation. The arguments required
  // are:
  //
  //  $number: Credit Card Number
  //  $expiry: Expiry date in the form:
  //    07/12 or 0712 (for July, 2012)
  $number = preg_replace('/[^\d]/', '', $number);
  $expiry = preg_replace('/[^\d]/', '', $expiry);
  $left  = substr($number, 0, 4);
  $cclen = strlen($number);
  $chksum = 0;
  // Diners Club
  if (($left >= 3000) && ($left <= 3059) ||
    ($left >= 3600) && ($left <= 3699) ||
    ($left >= 3800) && ($left <= 3889))
   if ($cclen != 14) return FALSE;
  // JCB
  if (($left >= 3088) && ($left <= 3094) ||
    ($left >= 3096) && ($left <= 3102) ||
    ($left >= 3112) && ($left <= 3120) ||
    ($left >= 3158) && ($left <= 3159) ||
    ($left >= 3337) && ($left <= 3349) ||
    ($left >= 3528) && ($left <= 3589))
   if ($cclen != 16) return FALSE;
  // American Express
  elseif (($left >= 3400) && ($left <= 3499) ||
      ($left >= 3700) && ($left <= 3799))
   if ($cclen != 15) return FALSE;
  // Carte Blanche
  elseif (($left >= 3890) && ($left <= 3899))
   if ($cclen != 14) return FALSE;
  // Visa
  elseif (($left >= 4000) && ($left <= 4999))
   if ($cclen != 13 && $cclen != 16) return FALSE;
  // MasterCard
  elseif (($left >= 5100) && ($left <= 5599))
   if ($cclen != 16) return FALSE;
  // Australian BankCard
  elseif ($left == 5610)
   if ($cclen != 16) return FALSE;
  // Discover
  elseif ($left == 6011)
   if ($cclen != 16) return FALSE;
  // Unknown
  else return FALSE;
  for ($j = 1 - ($cclen % 2); $j < $cclen; $j += 2)
   $chksum += substr($number, $j, 1);
  for ($j = $cclen % 2; $j < $cclen; $j += 2)
  {
   $d = substr($number, $j, 1) * 2;
   $chksum += $d < 10 ? $d : $d - 9;
  }
  if ($chksum % 10 != 0) return FALSE;
  if (mktime(0, 0, 0, substr($expiry, 0, 2), date("t"),
   substr($expiry, 2, 2)) < time()) return FALSE;
  return TRUE;
}
?>

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
MayFish PHP的MVC架构的开发框架
Aug 13 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
php增删改查示例自己写的demo
Sep 04 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
PHP中把有符号整型转换为无符号整型方法
May 27 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
php readfile下载大文件失败的解决方法
May 22 PHP
PHP使用Redis实现防止大并发下二次写入的方法
Oct 09 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
Nov 03 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
解决Laravel5.2 Auth认证退出失效的问题
Oct 14 PHP
php动态生成版权所有信息的方法
Mar 24 #PHP
php实现通用的信用卡验证类
Mar 24 #PHP
php生成短域名函数
Mar 23 #PHP
PHP随机生成信用卡卡号的方法
Mar 23 #PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 #PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 #PHP
php实现约瑟夫问题的方法小结
Mar 23 #PHP
You might like
德生H-501的评价与改造
2021/03/02 无线电
php之XML转数组函数的详解
2013/06/07 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
JavaScript中一个奇葩的IE浏览器判断方法
2014/04/16 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
支付宝小程序tabbar底部导航
2018/11/06 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python广度优先搜索得到两点间最短路径
2019/01/17 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
python实现统计代码行数的小工具
2019/09/19 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
Philosophy美国官网:美国美容品牌
2016/08/15 全球购物
人事专员岗位职责
2013/11/20 职场文书
产品质量保证书
2014/04/29 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
党校党性分析材料
2014/12/19 职场文书
慰问信模板
2015/02/14 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android