信用卡效验程序


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中看实例学正则表达式
Dec 25 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
php操作mysql数据库的基本类代码
Feb 25 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
Feb 10 PHP
PHP+JS实现大规模数据提交的方法
Jul 02 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
yii2.0实现创建简单widgets示例
Jul 18 PHP
PHP请求Socket接口测试实例
Aug 12 PHP
PHP入门教程之上传文件实例详解
Sep 11 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 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基于yii框架实现生成ICO图标
2015/11/13 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
Python判断直线和矩形是否相交的方法
2015/07/14 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python模拟三级菜单效果
2017/09/11 Python
python编程嵌套函数实例代码
2018/02/11 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
Django实现CAS+OAuth2的方法示例
2019/10/30 Python
python 实现性别识别
2020/11/21 Python
基于ccs3的timeline时间线实现方法
2020/04/30 HTML / CSS
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
高级方案规划工程师岗位职责
2013/11/29 职场文书
大学生求职自我评价
2014/01/16 职场文书
幼儿园儿童节活动主持词+串词大全
2014/03/21 职场文书
校长竞聘演讲稿
2014/05/16 职场文书
小学社会实践活动总结
2014/07/03 职场文书
优秀校长事迹材料
2014/12/24 职场文书
召开会议通知范文
2015/04/15 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
python保存图片的四个常用方法
2022/02/28 Python