信用卡效验程序


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中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
PHP include_path设置技巧分享
Jul 03 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
一个PHP二维数组排序的函数分享
Jan 17 PHP
基于PHP的简单采集数据入库程序
Jul 30 PHP
ThinkPHP做文字水印时提示call an undefined function exif_imagetype()解决方法
Oct 30 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
Apr 20 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 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基于redis计数器类定义与用法示例
2018/02/08 PHP
Document 对象的常用方法
2009/07/31 Javascript
jquery使用ColorBox弹出图片组浏览层实例演示
2013/03/14 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
JS实现拼图游戏
2021/01/29 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
[55:11]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第一场 11.26
2020/11/30 DOTA
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
python 连接sqlite及简单操作
2017/06/30 Python
Python后台管理员管理前台会员信息的讲解
2019/01/28 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
windows系统Tensorflow2.x简单安装记录(图文)
2021/01/18 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
主持人演讲稿
2014/05/13 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
活动总结新闻稿
2014/08/30 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
公司介绍信范文
2015/01/31 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
员工升职自荐信
2015/03/27 职场文书
2015年文员个人工作总结
2015/04/09 职场文书
大学运动会加油稿
2015/07/22 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python