codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
<?php function validateCC($ccnum){ // Clean up input $ccnum = ereg_replace('[-[:space:]]', '',$ccnum); // What kind of card do we have $type = check_type($ccnum); // Does the number matchup ? $valid = check_number($ccnum); return array($type, $valid); } // Prefix and Length checks function check_type( $cardnumber ) { $cardtype = "UNKNOWN"; $len = strlen($cardnumber); if ( $len == 15 && substr($cardnumber, 0, 1) == '3' ) { $cardtype = "amex"; } elseif ( $len == 16 && substr($cardnumber, 0, 4) == '6011' ) { $cardtype = "discover"; } elseif ( $len == 16 && substr($cardnumber, 0, 1) == '5' ) { $cardtype = "mc"; } elseif ( ($len == 16 || $len == 13) && substr($cardnumber, 0, 1) == '4' ) { $cardtype = "visa"; } return ( $cardtype ); } // MOD 10 checks function check_number( $cardnumber ) { $dig = toCharArray($cardnumber); $numdig = sizeof ($dig); $j = 0; for ($i=($numdig-2); $i>=0; $i-=2){ $dbl[$j] = $dig[$i] * 2; $j++; } $dblsz = sizeof($dbl); $validate =0; for ($i=0;$i<$dblsz;$i++){ $add = toCharArray($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 1; } else { return 0; } } // takes a string and returns an array of characters function toCharArray($input){ $len = strlen($input); for ($j=0;$j<$len;$j++){ $char[$j] = substr($input, $j, 1); } return ($char); } $ccnumber = '5105105105105100'; list($type, $valid) = validateCC($ccnumber); if ( $valid ) { // Do something fun with the card echo "Number: <b>$ccnumber</b> ... Type: <b>$type</b> ... Valid: <b>$valid</b> <br />"; } else { // Return some sort of error } ?>
Private
[
?
]
Run code