信用卡效验程序


<?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);
}

?>



相关阅读:
LINQ学习笔记:过滤Filtering
Windows Sysinternals Suite Build 2009.06.04发布
JS在IE和FireFox之间常用函数的区别小结
MySQL在命名用过程中所遇到的常见问题
在光标处插入字符串的实现代码 兼容IE,Firefox
一段几乎可以让你死机的JS代码
SQL 注入式攻击的本质
CSS 中关于字体处理效果的思考
浅谈MySQL数据库优化
SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
用PHP的zlib压缩和解压缩swf文件
SQL 实用语句
asp.net中Request.QueryString与Request.Param的区别分析
用VBS实现一个小键盘动作CTRL+V粘贴操作与思路分析
快速导航

Copyright © 2016 phpStudy |