zoukankan      html  css  js  c++  java
  • php银行卡校验

    前言
    银行金卡,维萨和万事达、银联品牌,如果是贷记卡或准贷记卡,一定为16位卡号。而借记卡可以16-19位不等。
    美国运通卡则不论金卡或是白金卡、普通卡,都是15位卡号。
    16-19 位卡号校验位采用 Luhm 校验方法计算

    银行卡的校验方式

    Luhm校验

    1. 将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2
    2. 将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
    3. 将加法和加上校验位能被 10 整除。
     1 <?php
     2 /*
     3   16-19 位卡号校验位采用 Luhm 校验方法计算:
     4     1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2
     5     2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
     6     3,将加法和加上校验位能被 10 整除。
     7 */
     8 function luhm($s) {
     9     $n = 0;
    10     for ($i = strlen($s); $i >= 1; $i--) {
    11         $index=$i-1;
    12         //偶数位
    13         if ($i % 2==0) {
    14             $n += $s{$index};
    15         } else {//奇数位
    16             $t = $s{$index} * 2;
    17             if ($t > 9) {
    18                 $t = (int)($t/10)+ $t%10;
    19             }
    20             $n += $t;
    21         }
    22     }
    23     return ($n % 10) == 0;
    24 }
    25 
    26 $r = luhm('6225881414207430');
    27 var_dump($r);
    28 ?>
  • 相关阅读:
    类与对象
    类的声明与实例化
    面向对象的基本概念
    css下拉导航栏代码
    面向对象的三大特性
    面向对象三大基本特性,五大基本原则
    dom事件
    PHP 流程
    权限 查找
    留言板案例
  • 原文地址:https://www.cnblogs.com/luojianqun/p/4843897.html
Copyright © 2011-2022 走看看