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 相关文章推荐
MySQL授权问题总结
May 06 PHP
用PHP获取Google AJAX Search API 数据的代码
Mar 12 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
二招解决php乱码问题
Mar 25 PHP
PHP可变函数的使用详解
Jun 14 PHP
可以保证单词完整性的PHP英文字符串截取代码分享
Jul 15 PHP
ThinkPHP3.2.3数据库设置新特性
Mar 05 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
解决tp5在nginx下修改配置访问的问题
Oct 16 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
解析mysql 表中的碎片产生原因以及清理
2013/06/22 PHP
thinkphp数据查询和遍历数组实例
2014/11/28 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
PHP单文件上传原理及上传函数的封装操作示例
2019/09/02 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
Javascript 学习笔记 错误处理
2009/07/30 Javascript
jquery中获取元素的几种方式小结
2011/07/05 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
Mac下使用charles遇到的问题以及解决办法
2017/01/10 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
jQuery中的for循环var与let的区别
2018/04/21 jQuery
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
详解基于vue-cli3.0如何构建功能完善的前端架子
2018/10/09 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
使用JavaScript实现贪吃蛇游戏
2020/09/29 Javascript
详细介绍Python语言中的按位运算符
2013/11/26 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
实习评语
2013/12/16 职场文书
英语专业学生个人求职信范文
2014/01/06 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
事业单位年度考核评语
2014/12/31 职场文书
道歉的话语大全
2015/05/12 职场文书
同学会演讲稿
2019/04/02 职场文书
导游词之峨眉山
2019/12/16 职场文书
修改并编译golang源码的操作步骤
2021/07/25 Golang
vue router 动态路由清除方式
2022/05/25 Vue.js