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 相关文章推荐
追求程序速度,而不是编程的速度
Apr 23 PHP
PHP4中session登录页面的应用
Jul 25 PHP
解析php如何将日志写进syslog
Jun 28 PHP
php调用Google translate_tts api实现代码
Aug 07 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
PHP开发微信支付的代码分享
May 25 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
php判断用户是否手机访问代码
Jun 08 PHP
PHP可变函数学习小结
Nov 29 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
Nov 30 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
PHP文件操作简单介绍及函数汇总
Dec 11 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
php2html php生成静态页函数
2008/12/08 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
Node.js中HTTP模块与事件模块详解
2014/11/14 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
Bootstrap每天必学之折叠
2016/04/12 Javascript
jQuery实现的小图列表,大图展示效果幻灯片示例
2016/10/25 Javascript
JavaScript仿微博发布信息案例
2016/11/16 Javascript
Bootstrap表单使用方法详解
2017/02/17 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
express + jwt + postMan验证实现持久化登录
2019/06/05 Javascript
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
Python与Redis的连接教程
2015/04/22 Python
python开发之str.format()用法实例分析
2016/02/22 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
python 删除指定时间间隔之前的文件实例
2018/04/24 Python
python基于opencv检测程序运行效率
2019/12/28 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
adidas澳大利亚官方网站:adidas Australia
2018/04/15 全球购物
哄娃神器4moms商店:美国婴童用品品牌
2019/03/07 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
医药大学生求职简历的自我评价
2013/10/17 职场文书
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
公司培训欢迎词
2014/01/10 职场文书
给客户的感谢信
2015/01/21 职场文书
党风廉政承诺书2016
2016/03/25 职场文书
MySQL自定义函数及触发器
2022/08/05 MySQL