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读注册表
Oct 09 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
基于PHP中的常用函数回顾
Jul 11 PHP
php生成随机颜色方法汇总
Dec 03 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
SSO单点登录的PHP实现方法(Laravel框架)
Mar 23 PHP
PHP sleep()函数, usleep()函数
Aug 25 PHP
PHP登录(ajax提交数据和后台校验)实例分享
Dec 29 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
PHP面向对象之里氏替换原则简单示例
Apr 08 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 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输出数组中重名的元素的几种处理方法
2012/09/05 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Nginx上传文件全部缓存解决方案
2015/08/17 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
2016/05/31 Javascript
jQuery+ajax+asp.net获取Json值的方法
2016/06/08 Javascript
Bootstrap编写一个同时适用于PC、平板、手机的登陆页面
2016/06/30 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
Vue.js基础知识小结
2017/01/13 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
javaScript实现复选框全选反选事件详解
2020/11/20 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
2018/08/04 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
微信小程序基于movable-view实现滑动删除效果
2020/01/08 Javascript
详解vue 组件的实现原理
2020/11/12 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
护理自我鉴定范文
2013/10/06 职场文书
平面设计的岗位职责
2013/11/08 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python
微信小程序调用python模型
2022/04/21 Python
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers