hallo,
kennt jemand ein einfaches skript um die Validierung einer Kreditkarte zu checken. ich habe zwar das gefunden, aber ich weiß nicht wie ich das nun anwenden soll. also wenn ich nun ein select menu habe mit der auswahl zwischen visa und mastercard
* mcd - Master Card
* vis - Visa
und ein textfeld mit der nummer.
wie wende ich dann dieses skript hier darauf an. wäre super nett wenn mir jemand weiterhelfen könnte.
function CCVal($Num, $Name = 'n/a') {
// Innocent until proven guilty
$GoodCard = true;
// Get rid of any non-digits
$Num = ereg_replace("[^[:digit:]]", "", $Num);
// Perform card-specific checks, if applicable
switch ($Name) {
case "mcd" :
$GoodCard = ereg("^5[1-5].{14}$", $Num);
break;
case "vis" :
$GoodCard = ereg("^4.{15}$|^4.{12}$", $Num);
break;
case "amx" :
$GoodCard = ereg("^3[47].{13}$", $Num);
break;
case "dsc" :
$GoodCard = ereg("^6011.{12}$", $Num);
break;
case "dnc" :
$GoodCard = ereg("^30[0-5].{11}$|^3[68].{12}$", $Num);
break;
case "jcb" :
$GoodCard = ereg("^3.{15}$|^2131|1800.{11}$", $Num);
break;
}
// The Luhn formula works right to left, so reverse the number.
$Num = strrev($Num);
$Total = 0;
for ($x=0; $x<strlen($Num); $x++) {
$digit = substr($Num,$x,1);
// If it's an odd digit, double it
if ($x/2 != floor($x/2)) {
$digit *= 2;
// If the result is two digits, add them
if (strlen($digit) == 2)
$digit = substr($digit,0,1) + substr($digit,1,1);
}
// Add the current digit, doubled and added if applicable, to the Total
$Total += $digit;
}
// If it passed (or bypassed) the card-specific check and the Total is
// evenly divisible by 10, it's cool!
if ($GoodCard && $Total % 10 == 0) return true; else return false;
}
kennt jemand ein einfaches skript um die Validierung einer Kreditkarte zu checken. ich habe zwar das gefunden, aber ich weiß nicht wie ich das nun anwenden soll. also wenn ich nun ein select menu habe mit der auswahl zwischen visa und mastercard
* mcd - Master Card
* vis - Visa
und ein textfeld mit der nummer.
wie wende ich dann dieses skript hier darauf an. wäre super nett wenn mir jemand weiterhelfen könnte.
function CCVal($Num, $Name = 'n/a') {
// Innocent until proven guilty
$GoodCard = true;
// Get rid of any non-digits
$Num = ereg_replace("[^[:digit:]]", "", $Num);
// Perform card-specific checks, if applicable
switch ($Name) {
case "mcd" :
$GoodCard = ereg("^5[1-5].{14}$", $Num);
break;
case "vis" :
$GoodCard = ereg("^4.{15}$|^4.{12}$", $Num);
break;
case "amx" :
$GoodCard = ereg("^3[47].{13}$", $Num);
break;
case "dsc" :
$GoodCard = ereg("^6011.{12}$", $Num);
break;
case "dnc" :
$GoodCard = ereg("^30[0-5].{11}$|^3[68].{12}$", $Num);
break;
case "jcb" :
$GoodCard = ereg("^3.{15}$|^2131|1800.{11}$", $Num);
break;
}
// The Luhn formula works right to left, so reverse the number.
$Num = strrev($Num);
$Total = 0;
for ($x=0; $x<strlen($Num); $x++) {
$digit = substr($Num,$x,1);
// If it's an odd digit, double it
if ($x/2 != floor($x/2)) {
$digit *= 2;
// If the result is two digits, add them
if (strlen($digit) == 2)
$digit = substr($digit,0,1) + substr($digit,1,1);
}
// Add the current digit, doubled and added if applicable, to the Total
$Total += $digit;
}
// If it passed (or bypassed) the card-specific check and the Total is
// evenly divisible by 10, it's cool!
if ($GoodCard && $Total % 10 == 0) return true; else return false;
}
Kommentar