信用卡效验程序


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&amp;&amp;mysql)一
Oct 09 PHP
用PHP调用数据库的存贮过程!
Oct 09 PHP
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
Feb 22 PHP
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
Oct 24 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
深入理解PHP内核(一)
Nov 10 PHP
谈谈PHP连接Access数据库的注意事项
Aug 12 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
php实现查询功能(数据访问)
May 23 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
星际争霸中的热键
2020/03/04 星际争霸
PHP写的资源下载防盗链类分享
2014/05/12 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
微信小程序 消息推送php服务器验证实例详解
2017/03/30 PHP
Laravel框架中Blade模板的用法示例
2017/08/30 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
2018/05/24 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
深入理解JavaScript系列(21):S.O.L.I.D五大原则之接口隔离原则ISP详解
2015/03/05 Javascript
分享一个插件实现水珠自动下落效果
2016/06/01 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
jQuery焦点图轮播效果实现方法
2016/12/19 Javascript
vue组件实例解析
2017/01/10 Javascript
vue 封装自定义组件之tabal列表编辑单元格组件实例代码
2017/09/07 Javascript
JavaScript反射与依赖注入实例详解
2018/05/29 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
javascript+css实现进度条效果
2020/03/25 Javascript
python读取文本绘制动态速度曲线
2018/06/21 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
python通过链接抓取网站详解
2019/11/20 Python
python实现简单井字棋小游戏
2020/03/05 Python
使用python创建生成动态链接库dll的方法
2020/05/09 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
css3实现一款模仿iphone样式的注册表单
2013/03/20 HTML / CSS
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
什么是反射
2012/03/17 面试题
三年级音乐教学反思
2014/01/28 职场文书
培训自我鉴定
2014/01/31 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
学生退学证明
2015/06/23 职场文书
Nginx速查手册及常见问题
2022/04/07 Servers
MySQL的存储过程和相关函数
2022/04/26 MySQL