信用卡效验程序


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 相关文章推荐
php5.2时间相差8小时
Jan 15 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
thinkPHP实现表单自动验证
Dec 24 PHP
php输出全球各个时区列表的方法
Mar 31 PHP
php基于Snoopy解析网页html的方法
Jul 09 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
php实现微信扫码支付
Mar 26 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 PHP
PHP使用mongoclient简单操作mongodb数据库示例
Feb 08 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 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 日期加减的类,很不错
2009/10/10 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
javascript各种复制代码收集
2008/09/20 Javascript
Javascript 验证上传图片大小[客户端]
2009/08/01 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
React路由管理之React Router总结
2018/05/10 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
Python中用PIL库批量给图片加上序号的教程
2015/05/06 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
python异步存储数据详解
2019/03/19 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Python中常见的数制转换有哪些
2020/05/27 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
Django跨域请求原理及实现代码
2020/11/14 Python
医疗保健专业人士购物网站:Scrubs & Beyond
2017/02/08 全球购物
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
三个Unix的命令面试题
2015/04/12 面试题
大学生职业规划前言模板
2013/12/27 职场文书
护士毕业实习感言
2014/03/05 职场文书
销售内勤岗位职责
2014/04/15 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
Html分层的box-shadow效果的示例代码
2021/03/30 HTML / CSS
详解OpenCV获取高动态范围(HDR)成像
2022/04/29 Python