Try this:

  function do_mod_10($num)
  {
    // The Luhn formula works right to left, so reverse the number.
    $num = strrev($num);
    $total = 0;
    for ($i = 0, $j = 1; $i < strlen($num); $i++, $j=3-$j)
    {
      $digit = $num[$i] * $j;
      if ($digit > 9)  $digit -= 9;
      $total += $digit;
    }

    return ($total % 10 == 0);
  }

-----Original Message-----
From: Mark McCulligh [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, July 24, 2002 10:47 AM
To: [EMAIL PROTECTED]
Subject: [PHP] Re: Credit card checks?


You could use an algorithms called mod10.  Both Visa, MasterCard and I think
most other credit cards use the mod10 algorithm.  A credit card must pass a
mod10 test to be a valid number(Like a Regular Expression test).  It won't
tell you if the number exist, but it will tell you if it could exist.  I
also know the mod10 is used for Canadian Social Security numbers (SIN).

Unfortunately I have never seen a PHP function for it, I only used mod10 in
a language called Uniface by Compuware.   I know there is another name for
it also, but I can't remember it right now.

It is a great test, someone just typing in numbers at random will have a
terrible time guessing a number right.  I have never seen someone do it let.
Then you can use the first character of the number to test the card type.

I will see if I can locate the algorithm and email it too you.


Mark

"Jas" <[EMAIL PROTECTED]> wrote in message
[EMAIL PROTECTED]">news:[EMAIL PROTECTED]...
> Just wondering if anyone has come across the need to develop a class to
test
> a string of numbers based on a credit card type.  If you have where would
I
> be able to get information on what string of numbers is consistent with
each
> of the different credit cards?  Any help would be appreciated!
> Jas
>
>



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to