信用卡效验程序

5年以前  |  阅读数:1170 次  |  编程语言:PHP 

<?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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
贪吃蛇
文件下载
双位运算符
发送邮件
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
提取后缀名
年的日历图
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例