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 相关文章推荐
php结合表单实现一些简单功能的例子
Jun 04 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
基于php和mysql的简单的dao类实现crud操作功能
Jan 27 PHP
PHP Session机制简介及用法
Aug 19 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
php检查页面是否被百度收录
Oct 28 PHP
在Thinkphp中使用ajax实现无刷新分页的方法
Oct 25 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
thinkphp5.0自定义验证规则使用方法
Nov 16 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
PHP实现微信提现功能
Sep 30 PHP
PHP实现无限极分类的两种方式示例【递归和引用方式】
Mar 25 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
PHP个人网站架设连环讲(四)
2006/10/09 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
2011/11/10 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
Javascript----文件操作
2007/01/18 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
javascript模块化简单解析
2016/04/07 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
深入理解(function(){... })();
2016/08/16 Javascript
JS给Array添加是否包含字符串的简单方法
2016/10/29 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
vue 实现左右拖拽元素并且不超过他的父元素的宽度
2018/11/30 Javascript
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
python远程连接服务器MySQL数据库
2018/07/02 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
住宅使用说明书
2014/05/09 职场文书
学生自我鉴定格式及范文
2014/09/16 职场文书
房屋租赁合同补充协议
2014/10/11 职场文书
优秀英文求职信范文
2015/03/19 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
仙境之桥观后感
2015/06/16 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
Python 高级库15 个让新手爱不释手(推荐)
2021/05/15 Python
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang