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字符转义相关函数小结(php下的转义字符串)
Apr 12 PHP
php include的妙用,实现路径加密
Jul 29 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
深入解析Session是否必须依赖Cookie
Aug 02 PHP
PHP7.0版本备注
Jul 23 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
简单的自定义php模板引擎
Aug 26 PHP
Laravel学习基础之migrate的使用教程
Oct 11 PHP
Laravel使用Queue队列的技巧汇总
Sep 02 PHP
php 策略模式原理与应用深入理解
Sep 25 PHP
laravel 实现用户登录注销并限制功能
Oct 24 PHP
50个优秀经典PHP算法大集合 附源码
Aug 26 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
jQuery 技巧大全(新手入门篇)
2009/05/12 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
通过jQuery源码学习javascript(三)
2012/12/27 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
IE6-IE9使用JSON、table.innerHTML所引发的问题
2015/12/22 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
解决element UI 自定义传参的问题
2018/08/22 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
Python下使用Psyco模块优化运行速度
2015/04/05 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python中turtle库的使用实例
2019/09/09 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
python将print输出的信息保留到日志文件中
2019/09/27 Python
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
泰国第一在线超市:Tops
2021/02/13 全球购物
TCP/IP的分层模型
2013/10/27 面试题
写自荐信三大法宝
2014/01/24 职场文书
员工年终自我评价
2014/09/14 职场文书
公务员政审材料
2014/12/23 职场文书
工作保证书怎么写
2015/02/28 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
Python面向对象之成员相关知识总结
2021/06/24 Python