信用卡效验程序


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 相关文章推荐
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
Trying to clone an uncloneable object of class Imagic的解决方法
Jan 11 PHP
基于empty函数的输出详解
Jun 17 PHP
PHP怎么实现网站保存快捷方式方便用户随时浏览
Aug 15 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
php+ajax实现文章自动保存的方法
Dec 30 PHP
PHP中Socket连接及读写数据超时问题分析
Jul 19 PHP
php微信公众平台开发之微信群发信息
Sep 13 PHP
PHP排序二叉树基本功能实现方法示例
May 26 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
laravel orm 关联条件查询代码
Oct 21 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中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
2011/05/04 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP实现自动登入google play下载app report的方法
2014/09/23 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
CI框架扩展系统核心类的方法分析
2016/05/23 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
javascript随机之洗牌算法深入分析
2014/06/07 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
AngularJS的内置过滤器详解
2015/05/14 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 时间处理datetime实例
2008/09/06 Python
python实现简单温度转换的方法
2015/03/13 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
Python实现的十进制小数与二进制小数相互转换功能
2017/10/12 Python
Python如何执行系统命令
2020/09/23 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
临床医学专业学生的自我评价分享
2013/11/21 职场文书
安全生产投入制度
2014/01/29 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书