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 单引号与双引号的区别
Nov 24 PHP
关于php fread()使用技巧
Jan 22 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
php警告Creating default object from empty value 问题的解决方法
Apr 02 PHP
Linux下手动编译安装PHP扩展的例子分享
Jul 15 PHP
php缓冲输出实例分析
Jan 05 PHP
php随机生成数字字母组合的方法
Mar 18 PHP
LAMP环境使用Composer安装Laravel的方法
Mar 25 PHP
阿里云PHP SMS短信服务验证码发送方法
Jul 11 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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 输出简单动态WAP页面
2009/06/09 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
详解HTTP Cookie状态管理机制
2016/01/14 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
用javascript父窗口控制只弹出一个子窗口
2007/04/10 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
javascript 星级评分效果(手写)
2012/12/24 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
详解JSONObject和JSONArray区别及基本用法
2017/10/25 Javascript
Vue+axios实现统一接口管理的方法
2018/07/23 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
vue.js的状态管理vuex中store的使用详解
2019/11/08 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
python实现requests发送/上传多个文件的示例
2018/06/04 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
Python使用post及get方式提交数据的实例
2019/01/24 Python
Numpy数组的广播机制的实现
2020/11/03 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
人力资源管理系自荐信
2014/05/31 职场文书
企业总经理任命书
2014/06/05 职场文书
部门活动策划方案
2014/08/16 职场文书
2014年保洁员工作总结
2014/11/19 职场文书
经理助理岗位职责
2015/02/02 职场文书
计算机专业自荐信
2015/03/05 职场文书