信用卡效验程序


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 06 PHP
PHP中的日期处理方法集锦
Jan 02 PHP
php生成缩略图的类代码
Oct 02 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
PHP中常用的转义函数
Feb 28 PHP
PHP中mysql_field_type()函数用法
Nov 24 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
PHP集成环境XAMPP的安装与配置
Nov 13 PHP
设定php简写功能的方法
Nov 28 PHP
laravel使用数据库测试注意事项
Apr 10 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
一个从别的网站抓取信息的例子(域名查询)
2006/10/09 PHP
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
用PHP函数解决SQL injection
2006/12/09 PHP
PHP输出英文时间日期的安全方法(RFC 1123格式)
2014/06/13 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
PHP7 参数处理机制修改
2021/03/09 PHP
JQuery显示隐藏页面元素的方法总结
2015/04/16 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
Angular.Js的自动化测试详解
2016/12/09 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
原生JS实现层叠轮播图
2017/05/17 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
2017/09/15 Javascript
jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】
2018/04/26 jQuery
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
微信小程序使用二次贝塞尔曲线画波浪
2018/12/25 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
python万年历实现代码 含运行结果
2017/05/20 Python
分析python切片原理和方法
2017/12/19 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
Python assert语句的简单使用示例
2019/07/28 Python
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
《数星星的孩子》教学反思
2014/04/11 职场文书
教师师德师风整改措施
2014/10/24 职场文书
离婚纠纷代理词
2015/05/23 职场文书
篮球比赛通讯稿
2015/07/18 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
Java基于字符界面的简易收银台
2021/06/26 Java/Android
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android
PyTorch中permute的使用方法
2022/04/26 Python