validateCard($cc_number);
$this->validateExDate($date);
$this->validateCVV($cc_number, $cvv2);
}
function validateCard($cc_number){
global $e;
$first_number = substr($cc_number, 0, 1);
switch ($first_number){
case 3:
if (!preg_match('/^3\d{3}[ \-]?\d{6}[ \-]?\d{5}$/', $cc_number)) $e->setError("American Express number is not valid");
break;
case 4:
if (!preg_match('/^4\d{3}[ \-]?\d{4}[ \-]?\d{4}[ \-]?\d{4}$/', $cc_number)) $e->setError("Visa number is not valid");
break;
case 5:
if (!preg_match('/^5\d{3}[ \-]?\d{4}[ \-]?\d{4}[ \-]?\d{4}$/', $cc_number)) $e->setError("MasterCard number is not valid");
break;
case 6:
if (!preg_match('/^6011[ \-]?\d{4}[ \-]?\d{4}[ \-]?\d{4}$/', $cc_number)) $e->setError("Discover Card number is not valid");
break;
default:
$e->setError("Credit Card number is not valid: Error 1");
break;
}
if($e->countErrors() == 0) $this->validateCard2($cc_number);
}
function validateCard2($cc_number){
global $e;
$checksum = 0;
$j = 1;
for ($i = strlen($cc_number) - 1; $i >= 0; $i--){
$calc = substr($cc_number, $i, 1) * $j;
if ($calc > 9){
$checksum = $checksum + 1;
$calc = $calc - 10;
}
$checksum += $calc;
if ($j == 1){
$j = 2;
}else{
$j = 1;
}
}
if ($checksum % 10 != 0) $e->setError("Credit Card number is not valid: Error 2");
}
function validateExDate($date){
global $e;
$month = substr($date, 0, 2);
$year = substr($date, 2, 2);
$current_month = date("m");
$current_year = date("y");
if ($year < $current_year){
$e->setError("Expiration Date is not valid : Error 3");
}else{
if ($year == $current_year)
{
if ($month < $current_month){
$e->setError("Expiration Date is not valid : Error 4");
}
}
}
}
function validateCVV($cc_number, $cvv2){
global $e;
$first_number = substr($cc_number, 0, 1);
if ($first_number == 3){
if (!preg_match("/^\d{4}$/", $cvv2)) $e->setError("CVV number is not valid : Error 5");
}else{
if (!preg_match("/^\d{3}$/", $cvv2)) $e->setError("CVV number is not valid : Error 6");
}
}
function maskCard($cc_number){
$count = strlen($cc_number);
for($i = 1; $i <= ($count -4); $i++){
echo "X";
}
echo substr($cc_number, -4);
}
}
?>
test_credit.php
validate($cc_number, $cc_cvv, $date);
if($e->countErrors() == 0){
//process form
header("location: somewhere.php");
die();
}
}
?>
showErrors(); ?>
To mask a credit card number use this:
echo $cc->maskCard($cc_number);