当前位置: 首页 > 图文教程 > 网络编程 > PHP > 信用卡效验程序

PHP
PHP中for循环语句的几种“变态”用法
通过php来读取xml的数据
PHP中使用XML-RPC构造Web Service简单入门
用PHP通过SMTP发送邮件
用PHP操纵Oracle的LOB类型的数据
PHP函数学习之PHP函数点评
Php高手带路--问题汇总解答
利用PHP和AJAX创建RSS聚合器
PHP与Javascript的两种交互方式
高手传经:学习PHP重在坚持
动态网页PHP中引用&的使用注意事项
用PHPINFO来实现PHP的配置统计过程
向普通人加密 用PHP程序保护数据
使用 PHP 快速生成 Flash 动画
Php常见问题总结
怎样才能成为PHP高手?
PHP对战ASP:这还值得讨论吗?
PHP大潮将至 PHP近年发展分析
小荷才露尖尖角 中国的PHP社群介绍
从草根到大腕 PHP技术发展历程

PHP 中的 信用卡效验程序


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 253 ::
收藏到网摘: n/a

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