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 相关文章推荐
怎样在UNIX系统下安装MySQL
Oct 09 PHP
PHP产生随机字符串函数
Dec 06 PHP
apache rewrite_module模块使用教程
Jan 10 PHP
php 表单验证实现代码
Mar 10 PHP
php实现mysql封装类示例
May 07 PHP
PHP实现更新中间关联表数据的两种方法
Sep 01 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
用PHP代码在网页上生成图片
Jul 01 PHP
php字符串操作常见问题小结
Oct 11 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
多个Laravel项目如何共用migrations详解
Sep 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检测移动设备类mobile detection使用实例
2014/04/14 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
php中数字、字符与对象判断函数用法实例
2014/11/26 PHP
PHP整合PayPal支付
2015/06/11 PHP
php实现中文转数字
2016/02/18 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
php和nginx交互实例讲解
2019/09/24 PHP
Javascript MD4
2006/12/20 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
利用Vue.js实现checkbox的全选反选效果
2017/01/18 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
[01:32]寻找你心中的那团火 DOTA2 TI9火焰传递活动今日开启
2019/05/16 DOTA
Python translator使用实例
2008/09/06 Python
解读! Python在人工智能中的作用
2017/11/14 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Python计算一个点到所有点的欧式距离实现方法
2019/07/04 Python
QML实现钟表效果
2020/06/02 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
HomeAway澳大利亚:预订你的度假屋,公寓、度假村、别墅等
2019/02/20 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
学生党员一帮一活动总结
2014/07/08 职场文书
专项资金申请报告
2015/05/15 职场文书
导游词之永济鹳雀楼
2020/01/16 职场文书
Python网络编程之ZeroMQ知识总结
2021/04/25 Python