mein script
<?
function validateCC($ccnum, $type = ''){
// Eingabe von Leerzeichen befreien
$type = strtolower($type);
$ccnum = preg_replace( '/[-[:space:]]/', '', $ccnum);
if (strlen($ccnum) == 0) return FALSE;
// Test des Kartentyps
switch ($type) {
case '':
break;
case 'visa':
if (strlen($ccnum) != 13 and strlen($ccnum) != 16
or substr($ccnum, 0, 1) != "4") {
return FALSE;
}
break;
case 'jbc':
if (strlen($ccnum) != 16 || substr($ccnum,0,4) != '3088' & substr($ccnum,0,4) != '3096'){
return FALSE;
}
break;
case 'diner':
if (strlen($ccnum) != 14 || substr($ccnum,0,1) == '3') {
return FALSE;
}
break;
case 'mastercard':
if (strlen($ccnum) != 16 || !preg_match('/^5[1-5]/', $ccnum)) {
return FALSE;
}
break;
case 'amex':
if (strlen($ccnum) != 15 || !preg_match('/^3[47]/', $ccnum)) {
return FALSE;
}
break;
case 'discover':
if (strlen($ccnum) != 16 || substr($ccnum,0,4) == '6011') {
return FALSE;
}
break;
default:
return FALSE;
}
// Starte MOD 10-Tests
$dig = CharToArray($ccnum);
$numdig = sizeof($dig);
for ($i=($numdig-2), $j=0 ; $i>=0; $i-=2, $j++) {
$dbl[$j] = $dig[$i] * 2;
}
$dblsz = sizeof($dbl);
$validate = 0;
for ($i=0; $i<$dblsz; $i++) {
$add = CharToArray($dbl[$i]);
for ($j=0; $j<sizeof($add); $j++) {
$validate += $add[$j];
}
$add = '';
}
for ($i=($numdig-1); $i>=0; $i-=2){
$validate += $dig[$i];
}
if (substr($validate, -1, 1) == '0')
return TRUE;
else
return FALSE;
}
// Diese Funktion gibt eine Zeichenkette als Array zurück
function CharToArray($input) {
$char = preg_split('//', $input);
array_pop($char);
array_shift($char);
return ($char);
}
echo 'Prüfe "' . $ccnumber . '"<br>';
echo validateCC($ccnumber, $cctype) ? 'Nummer ist gültig' : 'Nummer ist nicht gültig';
?>
<form action=<?echo" "$PHP_SELF"";?> method="post">
Nummer zu Prüfen: <input type="Text" maxlength="20" name="ccnumber">
<select name="cctype">
<option value="">- Wählen Sie den Kartentyp -
<option value="amex">American Express
<option value="visa">VISA
<option value="diner">Diners Club
<option value="jbc">JBC
<option value="mastercard">MasterCard
<option value="discover">Discover
</select>
<input type="Submit" value="Prüfen">
</form>
Natürlich muss ich es so schreiben das es das ließt, aber genau das ist mein Problem.Ich hab jetzt mit viel Mühe die Bedingungen ermittelt und habe versucht neue cases zu schreiben.Hat auch funktioniert aber bei mehr als drei || Bedingung hat er die vierte nicht mehr ausgeführt.
Also hab ich sie hier wieder entfernt.
Leider weiß jetzt nicht weiter, wie ich die Bedingungen noch einpflegen kann?
|