信用卡效验程序

<?php

////////////////////////////////////////////////////  
//                                                //   
// Credit card validation routine                 //  
// May 15, 2000                                   //  
// By ariso                                       //  
// validateCardCode($number[,$cardtype])          //  
////////////////////////////////////////////////////

function validateCardCode($cardnumber, $cardtype =  'unknown')
{  
     //Clean up input

$cardtype = strtolower($cardtype);  
    $cardnumber = ereg_replace( '[-[:space:]]',  '',$cardnumber);

//Do type specific checks

if ($cardtype ==  'unknown') {  
         //Skip type specific checks  
    }  
    elseif ($cardtype ==  'mastercard'){  
        if (strlen($cardnumber) != 16 || !ereg( '5[1-5]', $cardnumber)) return 0;  
    }  
    elseif ($cardtype ==  'visa'){  
        if ((strlen($cardnumber) != 13 && strlen($cardnumber) != 16) || substr($cardnumber, 0, 1) !=  '4')

return 0;  
    }  
    elseif ($cardtype ==  'amex'){  
        if (strlen($cardnumber) != 15 || !ereg( '3[47]', $cardnumber)) return a;  
    }  
    elseif ($cardtype ==  'discover'){  
        if (strlen($cardnumber) != 16 || substr($cardnumber, 0, 4) !=  '6011') return 0;  
    }  
    else {  
         //invalid type entered  
        return -1;  
    }

// Start MOD 10 checks

$dig = toCharArray($cardnumber);  
    $numdig = sizeof ($dig);  
    $intIntJ = 0;  
    for ($intI=($numdig-2); $intI>=0; $intI-=2){  
        $dbl[$intIntJ] = $dig[$intI] * 2;  
        $intIntJ++;  
    }      
    $dblsz = sizeof($dbl);  
    $validate =0;  
    for ($intI=0;$intI<$dblsz;$intI++){  
        $add = toCharArray($dbl[$intI]);  
        for ($intIntJ=0;$intIntJ<sizeof($add);$intIntJ++){  
            $validate += $add[$intIntJ];  
        }  
    $add =  '';  
    }  
    for ($intI=($numdig-1); $intI>=0; $intI-=2){  
        $validate += $dig[$intI];   
    }  
    if (substr($validate, -1, 1) ==  '0') return 1;  
    else return 0;  
}

// takes a string and returns an array of characters

function toCharArray($intInput){  
    $len = strlen($intInput);  
    for ($intIntJ=0;$intIntJ<$len;$intIntJ++){  
        $char[$intIntJ] = substr($intInput, $intIntJ, 1);      
    }  
    return ($char);  
}

?>

(0)

相关推荐

  • 信用卡效验程序

    <?php ////////////////////////////////////////////////////  //                                                //   // Credit card validation routine                 //  // May 15, 2000                                   //  // By ariso                

  • 使用Python3 编写简单信用卡管理程序

    1.程序执行代码: #Author by Andy #_*_ coding:utf-8 _*_ import os,sys,time Base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(Base_dir) str="欢迎使用银行信用卡自助服务系统!\n" for i in str: sys.stdout.write(i) sys.stdout.flush() time.

  • Python实现信用卡系统(支持购物、转账、存取钱)

    最近一直在做一个有关信用卡系统的项目,所有很少出来给大家打招呼了,今天也该告一段了,本项目是基于python编程语言做的,此信用卡支持购物,转账和存取钱,下面小编把需求及实现思路大概分享一下,仅供参考,如有bug欢迎各位大侠提出,共同学习进步,谢谢! 一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单独处理金钱,也不单独记录流水账,每种交易类型调用

  • c#一个定时重启的小程序实现代码第1/2页

    原理我像大家都很清楚,这里只说.NET(c#实现).服务器每次启动或者重启,都是没登陆的.那意味着启动项里不只能做,我就考虑到使用Windows服务.Windows服务在系统加载时候就会启动所有服务,把程序写进里面应该没错了. 需要重启,那就要一个时间来效验,写法都有很多.我这里采用ini来存放. Time 记录要重启的时间,验证时间. Day 用来累加天数. 复制代码 代码如下: [Reboot] Time=02:02:01 Day=3 使用System.Timers.Timer循环验证时间(

  • 网站程序中非SI漏洞的利用

    Part I 前言 现在网上最流行的网站攻击手段,要数得上SQL Injection了,虽然SI技术易学易用,并且容易取得较大的权限,但因其风头实在太大,现在一般稍有点安全意识的程序员都会注意到这个问题,并且通过GET方法提交的数据会被服务器记录在案,而让网管很容易找到入侵者. 非SI类攻击相对来说获得的服务器操作权限不大,但对于以获得数据为目的的入侵还是很有用的. Part II 方法介绍 常规的非SI类攻击有如下几种: 一. 跨站脚本攻击(XSS) 跨站脚本攻击不会直接对网站服务器造成破坏,

  • python 实现网上商城,转账,存取款等功能的信用卡系统

    一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单独处理金钱,也不单独记录流水账,每种交易类型调用处理金钱的函数(传入交易类型,交易金额) 2.处理金钱的函数,调用配置文件中关于每种交易类型的加减钱和利率 返回本次操作后信用卡可用余额,总欠款,剩余欠款,存款 3.客户端 银行管理员注册登陆 普通用户注册登陆 发送需求:注册.登陆.交易类型.交易金额

  • 安全脚本程序的编写 V1.0第1/3页

    基本思路: 为每一个功能写一个独立的程序,程序页 尽可能少的让客户了解你的服务器端信息 不要用"客户应该这么写"这个思路想问题 尽可能多的想到不可能发生的事情  1.关于交互式动态网页可能存在的问题 1.1 form类型的交互 1.1.1 概念介绍 在我们和浏览者进行交互时,最常用到的就是form(post/get/put方法),虽然非常方便,但是很多问题也是因他而起. form表单中input标志 用来接受用户输入的信息,例如:用户名.密码.email等.如果你没有对用户输入进行很好

  • 使用Vue开发自己的Chrome扩展程序过程详解

    前言 浏览器扩展程序是可以修改和增强 Web 浏览器功能的小程序.它们可用于各种任务,例如阻止广告,管理密码,组织标签,改变网页的外观和行为等等. 好消息是浏览器扩展并不难写.可以用你已经熟悉的 Web 技术(HTML.CSS 和 JavaScript)创建 -- 就像普通网页一样.但是与网页不同的是,扩展程序可以访问许多特定于浏览器的 API,这才是有趣的地方. 在本教程中,我将向你展示如何为 Chrome 构建一个能够改变新标签页行为的简单扩展.这个扩展程序的 JavaScript 部分,我

  • python使用正则筛选信用卡

    本文实例为大家分享了python使用正则筛选信用卡的具体代码,供大家参考,具体内容如下 本文来源于两个简单的题目: 1.判断一对单词是否是" Anagrams " 2.判断信用卡是否合理 判断 Anagramsstrong> anagrams 的百度翻译:由颠倒字母顺序而构成的字(短语) 而题目给出例子: [ DOG , ODG ] [ DOG , DOG ] [ DOG , GOD ] [ DOG , GDO ] 均为 anagrams . 那思路就简单了,直接拆分字母,排序,

  • python 实现简单的FTP程序

    FTP即文件传输协议:它基于客户机-服务器模型体系结构,应用广泛.它有两个通道:一个命令通道和一个数据通道.命令通道用于控制通信,数据通道用于文件的实际传输.使用FTP可以做很多事情,比如移动.下载.复制文件等. 一.开发环境 server端:centos 7  python-3.6.2 客户端:Windows 7 python-3.6.2 pycharm-2018 程序目的:1.学习使用socketserver实现并发处理多个客户端.            2.了解使用struct解决TCP粘

随机推荐