当前位置: 首页 > 面试题库 >

用PHP验证信用卡的最佳方法是什么?

马坚
2023-03-14
问题内容

在没有信用卡号且没有其他信息的情况下,PHP中确定该号码是否为有效号码的最佳方法是什么?

现在,我需要可以与American
Express,Discover,MasterCard和Visa一起使用的功能,但是如果它也可以与其他类型的功能一起使用,可能会有所帮助。


问题答案:

卡号验证分为三个部分:

  1. 模式 -是否与发行者模式(例如VISA /万事达卡等)匹配
  2. CHECKSUM- 它是否实际进行校验和(例如,将“ 34”后面的13个随机数字用作美国运通卡号)
  3. 真的存在 -它实际上有一个相关的帐户(你不可能得到这个没有商家帐户)

图案

  • MASTERCARD前缀= 51-55,长度= 16(Mod10校验和)
  • VISA前缀= 4,长度= 13或16(Mod10)
  • AMEX前缀= 34或37,长度= 15(Mod10)
  • 大来俱乐部/卡位前缀= 300-305、36或38,长度= 14(Mod10)
  • 发现前缀= 6011,622126-622925,644-649,65,长度= 16,(Mod10)
  • 等(前缀的详细列表)

校验和

大多数卡将Luhn算法用于校验和:

维基百科上描述的Luhn算法

Wikipedia链接上有许多实现的链接,包括PHP:

<?
/* Luhn algorithm number checker - (c) 2005-2008 shaman - www.planzero.org *
 * This code has been released into the public domain, however please      *
 * give credit to the original author where possible.                      */

function luhn_check($number) {

  // Strip any non-digits (useful for credit card numbers with spaces and hyphens)
  $number=preg_replace('/\D/', '', $number);

  // Set the string length and parity
  $number_length=strlen($number);
  $parity=$number_length % 2;

  // Loop through each digit and do the maths
  $total=0;
  for ($i=0; $i<$number_length; $i++) {
    $digit=$number[$i];
    // Multiply alternate digits by two
    if ($i % 2 == $parity) {
      $digit*=2;
      // If the sum is two digits, add them together (in effect)
      if ($digit > 9) {
        $digit-=9;
      }
    }
    // Total up the digits
    $total+=$digit;
  }

  // If the total mod 10 equals 0, the number is valid
  return ($total % 10 == 0) ? TRUE : FALSE;

}
?>


 类似资料:
  • 这并不困难,但它让我质疑spring auth服务器是最好的选择,还是我应该使用Keycloak?

  • 本文向大家介绍PHP验证信用卡卡号是否正确函数,包括了PHP验证信用卡卡号是否正确函数的使用技巧和注意事项,需要的朋友参考一下 可以使用以下PHP函数,验证一个卡号是否是信用卡:

  • 问题内容: 我通过定义如下的ENUM来验证从数据库中检索到的记录的状态 方法isSuccess()用于检查检索到的记录的状态(员工的列状态) 根据新的要求,引入了一组条件,例如A,B和C。对于他们,在Employee表“ condition”中有一列。 因此,我需要检索状态以及条件,并查看它是否属于具有两者组合的集合。 例如:isSuccess()应该检查以下内容: 必须做到这一点,以使我很容易在

  • 问题内容: Java有哪些好的电子邮件地址验证库?公用验证器是否有替代方案? 问题答案: pache Commons通常被称为一个可靠的项目。不过请记住,如果您想确保它是真实的电子邮件,并且所有者希望在您的网站上使用它,则仍然必须向该地址发送一封验证电子邮件。 编辑:有一个错误,它对域的限制太严格,导致它不接受来自新TLD的有效电子邮件。 此错误已于03 / Jan / 15 02:48在comm

  • 问题内容: 我已经设计网站已有一段时间了,但是在使用PHP和HTML时我还不确定。像这样用PHP和HTML 编写整个文档是否更好: 或拥有一个类似HTML的文件,只需添加PHP: 似乎比HTML 整洁,尤其是在整个页面中使用大量PHP的情况下,但这样做会丢失HTML的所有格式,即IDE中的颜色等。 问题答案: 对此有不同的意见。我认为有两种好的方法: 使用像Smarty这样的模板引擎,它将代码和表