Saturday, October 13, 2012

Validate Credit Card Number Using PHP

10/13/2012

This piece of code will check if a creditcard number could possibly be valid, determined on the number ranges given. It will NOT actually validate the number with the creditcard company but it could function as a pre-check.
<?php
/* 
Online PHP Examples with Source Code
website: http://4evertutorials.blogspot.in/
*/

function validate_credit_card($number)
{
    $false = false;
    $card_type = "";
    $card_regexes = array(
       "/^4\d{12}(\d\d\d){0,1}$/" => "visa",
       "/^5[12345]\d{14}$/"       => "mastercard",
       "/^3[47]\d{13}$/"          => "amex",
       "/^6011\d{12}$/"           => "discover",
       "/^30[012345]\d{11}$/"     => "diners",
       "/^3[68]\d{12}$/"          => "diners",
    );
 
    foreach ($card_regexes as $regex => $type) {
        if (preg_match($regex, $number)) {
            $card_type = $type;
            break;
        }
    }
 
    if (!$card_type) {
        return $false;
    }
   
    //  mod 10 checksum algorithm
    $revcode = strrev($number);
    $checksum = 0; 
 
    for ($i = 0; $i < strlen($revcode); $i++) {
        $current_num = intval($revcode[$i]);
        if($i & 1) {  // Odd  position
           $current_num *= 2;
        }
            // Split digits and add
            $checksum += $current_num % 10; if
        ($current_num >  9) {
            $checksum += 1;
        }
    }
 
    if ($checksum % 10 == 0) {
        return $card_type;
    } else {
        return $false;
    }
}


?>

helpful? Share this

The Editorial Team of 4everTutorials consists of a group of PHP Professionals.

0 comments:

 

© 2014 4everTutorials. All rights resevered.

Back To Top