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 相关文章推荐
JAVA/JSP学习系列之四
Oct 09 PHP
用PHP连接Oracle数据库
Oct 09 PHP
社区(php&amp;&amp;mysql)六
Oct 09 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
PHP SEO优化之URL优化方法
Apr 21 PHP
header导出Excel应用示例
Jan 24 PHP
PHP反射机制用法实例
Aug 28 PHP
php curl模拟post请求和提交多维数组的示例代码
Nov 19 PHP
PHP+swoole实现简单多人在线聊天群发
Jan 19 PHP
微信支付开发告警通知实例
Jul 12 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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中文字母数字验证码实现代码
2008/04/25 PHP
PHP获取用户的浏览器与操作系统信息的代码
2012/09/04 PHP
php并发对MYSQL造成压力的解决方法
2013/02/21 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
原生js和jquery实现图片轮播淡入淡出效果
2015/04/23 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
「中高级前端面试」JavaScript手写代码无敌秘籍(推荐)
2019/04/08 Javascript
vue中watch和computed为什么能监听到数据的改变以及不同之处
2019/12/27 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python3使用requests登录人人影视网站的方法
2016/05/11 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python实现祝福弹窗效果
2019/04/07 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
简单分析python的类变量、实例变量
2019/08/23 Python
python else语句在循环中的运用详解
2020/07/06 Python
详解Python中第三方库Faker
2020/09/25 Python
利用python批量爬取百度任意类别的图片的实现方法
2020/10/07 Python
python time()的实例用法
2020/11/03 Python
如何设置Java的运行环境
2013/04/05 面试题
经济系大学生求职信
2013/10/01 职场文书
《蚂蚁和蝈蝈》教学反思
2014/02/24 职场文书
学生抄袭作业的检讨书
2014/10/02 职场文书
农业生产宣传标语
2014/10/08 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
老公保证书
2015/01/17 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
详解SQL报错盲注
2022/07/23 SQL Server
python计算列表元素与乘积详情
2022/08/05 Python