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内核介绍及扩展开发指南―基础知识
Sep 11 PHP
php遍历数组的方法分享
Mar 22 PHP
PHP 解决session死锁的方法
Jun 20 PHP
php中引用符号(&amp;)的使用详解
Nov 13 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
Mar 18 PHP
关于PHP开发的9条建议
Jul 27 PHP
深入讲解PHP的Yii框架中的属性(Property)
Mar 18 PHP
PHP实现清除MySQL死连接的方法
Jul 23 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
基于Laravel实现的用户动态模块开发
Sep 21 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获取谷歌PR值算法,附上php查询PR值代码示例
2011/12/25 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
PHP实现的简单缓存类
2015/07/29 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
eclipse php wamp配置教程
2016/06/30 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
js右键菜单效果代码
2007/07/21 Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
js中数组(Array)的排序(sort)注意事项说明
2014/01/24 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
React.js绑定this的5种方法(小结)
2018/06/05 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
js实现通过开始结束控制的计时器
2019/02/25 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
python字符串排序方法
2014/08/29 Python
python使用matplotlib画饼状图
2018/09/25 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
Django接收自定义http header过程详解
2019/08/23 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
医学生自荐信
2013/12/03 职场文书
大学自主招生自荐信
2013/12/16 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
2016年春节慰问信息
2015/03/25 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
限期整改通知书
2015/04/22 职场文书
结婚司仪主持词
2015/06/29 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android