信用卡效验程序
程序员文章站
2022-06-15 08:13:55
<?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);
}
?>
////////////////////////////////////////////////////
// //
// 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);
}
?>
推荐阅读
-
挑选适合自己的网站建站程序技巧
-
使用windbg工具排查各种应用程序报错
-
国外著名论坛程序IPB(Invision Power Board)在nginx下的配置示例
-
微信小程序websocket实现即时聊天功能
-
taro开发微信小程序的实践
-
未能加载文件或程序集 HRESULT:0×80131047错误的解决办法
-
ConvertZ使用教程之简体中文程序(源代码)转为繁体中文
-
安装程序在正在设置 reporting service 和 share point 排除路径期间遇到错误的解决方
-
如何使用猎码安卓开发工具?使用猎码安卓开发工具编译猎码程序教程
-
YingInstall是什么?小颖安装程序制作专家安装使用图文教程