信用卡效验程序


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 Google的translate API代码
Dec 10 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
php json_encode奇怪问题说明
Sep 27 PHP
用PHP实现Ftp用户的在线管理
Feb 16 PHP
php stripslashes和addslashes的区别
Feb 03 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
Jul 13 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
Apr 04 PHP
分享5个非常有用的Laravel Blade指令
May 30 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 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 MVC模式在网站架构中的实现分析
2010/03/04 PHP
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
jQuery中wrapAll()方法用法实例
2015/01/16 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
微信扫码支付零云插件版实例详解
2017/04/26 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
使用Vue构建可重用的分页组件
2018/03/26 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[01:04:32]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第二场 2月23日
2021/03/11 DOTA
Python采集腾讯新闻实例
2014/07/10 Python
Python写的服务监控程序实例
2015/01/31 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
python队列通信:rabbitMQ的使用(实例讲解)
2017/12/22 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python实现flappy bird游戏
2018/12/24 Python
Python匿名函数/排序函数/过滤函数/映射函数/递归/二分法
2019/06/05 Python
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
医药销售求职信范文
2014/02/01 职场文书
先进工作者获奖感言
2014/02/08 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Python 实现Mac 屏幕截图详解
2021/10/05 Python
CentOS MySql8 远程连接实战
2022/04/19 MySQL
德生2P3收音机开箱评测
2022/04/30 无线电
vue实现登陆页面开发实践
2022/05/30 Vue.js