Kreditkartenvalidierung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kreditkartenvalidierung

    Hey Leude,
    ich hab da ein kleines Problem.Ich habe in einem PHP Buch einen Kreditkarten Check gefunden und ihn auf einer Webseite eingebaut.Leider enthällt dieser Check nur die Karten Amex,Eurocard,Discover und Visa.
    Nun wollte ich ihn noch für DINERSCLUB und JBC erweitern, und hab mir das Script nochmal vorgeknöpft,leider ohne Erfolg

    Das Script erledigt nur einen Check auf Prüfsumme und korrekte Länge der Karten,da diese bei jedem Anbieter jedoch verschieden sind, gestaltet es sich doch ein wenig komplizierter.

    Hat jemand so was schon mal gemacht bzw. Erfahrung in solchen Sachen und kann mir weiterhelfen?

    Hier ist das Script:
    001: <?php
    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 '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';
    ?>
    002: <form action="$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="mastercard">MasterCard
    <option value="discover">Discover
    </select>
    <input type="Submit" value="Prüfen">
    </form>
    Zuletzt geändert von Hans_23; 14.08.2002, 18:55.
Lädt...
X