信用卡效验程序


Posted in PHP onOctober 09, 2006

<?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);  
}  

?>  

PHP 相关文章推荐
通过文字传递创建的图形按钮
Oct 09 PHP
php allow_url_include的应用和解释
Apr 22 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
Oct 25 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
PHP环境搭建(php+Apache+mysql)
Nov 14 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
Aug 14 PHP
thinkPHP中钩子的使用方法实例分析
Nov 16 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
PHP使用redis位图bitMap 实现签到功能
Oct 08 PHP
用文本文件实现的动态实时发布新闻的程序
Oct 09 #PHP
构建简单的Webmail系统
Oct 09 #PHP
如何删除多级目录
Oct 09 #PHP
用PHP实现多级树型菜单
Oct 09 #PHP
PHP4在Windows2000下的安装
Oct 09 #PHP
模仿OSO的论坛(五)
Oct 09 #PHP
基于mysql的论坛(2)
Oct 09 #PHP
You might like
php使用timthumb生成缩略图的方法
2016/01/22 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
extjs4 treepanel动态改变行高度示例
2013/12/17 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
jQuery+ajax实现文章点赞功能的方法
2015/12/31 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
微信小程序实现长按删除图片的示例
2018/05/18 Javascript
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
js异步上传多张图片插件的使用方法
2018/10/22 Javascript
微信小程序如何利用getCurrentPages进行页面传值
2019/07/01 Javascript
微信小程序如何实现精确的日期时间选择器
2020/01/21 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
原生js实现放大镜组件
2021/01/22 Javascript
[05:20]2018DOTA2亚洲邀请赛主赛事第三日战况回顾 LGD率先挺进胜者组决赛
2018/04/06 DOTA
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
通过pykafka接收Kafka消息队列的方法
2018/12/27 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python 多线程串行和并行的实例
2019/02/22 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
运行Python编写的程序方法实例
2020/10/21 Python
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
学校门卫管理制度
2014/01/30 职场文书
租房合同协议书
2014/04/09 职场文书
会计学专业自荐信
2014/06/25 职场文书
学生会竞选演讲稿学习部
2014/08/25 职场文书
保险内勤岗位职责
2015/04/13 职场文书
未婚证明范本
2015/06/15 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
python迷宫问题深度优先遍历实例
2021/06/20 Python
Java实现经典游戏泡泡堂的示例代码
2022/04/04 Java/Android
html5+实现plus.io进行拍照和图片等获取
2022/06/01 HTML / CSS
Django框架中视图的用法
2022/06/10 Python