Mark Sanborn Mark Sanborn Fishing Mark Sanborn

Coder, Entrepreneur, Blogger, and Coffee Addict

Validating Credit Card Numbers with Zend Framework

Ever wonder how websites can tell you made a mistake entering your credit card number before you even submit it? Like most identification numbers credit cards have checksum digits built into them. Just like barcodes.

If you ever look at a EAN-13 UPC barcode (on all retail products) you will notice there is a digit outside of the regular set on the right. If any digit is out of order or mistyped you can tell that the barcode is wrong based on this checksum. It also allows barcode readers the ability to “guess” what the barcode if part of the barcode got riped or damaged. This is also how PAR files can repair corrupt damaged or even missing files.

Credit cards use a checksum algorithm called the, Luhn Algorithm, invented by Hans Peter Luhn. This simple algorithm can check to see if a credit card number was accidentally mistyped. This is what Zend Framework uses as well.

Validating Credit Card Numbers with Zend Framework

 
Here is a quick validation using Zend Framework:

$validator = new Zend_Validate_Ccnum();
        if ($validator->isValid('8181876154321')) {
            echo 'valid';
        } else {
            // email is invalid; print the reasons
            foreach ($validator->getMessages() as $message) {
                echo "$message\n";
            }
        }


This entry was posted in Howto, PHP, Programming, Security and tagged . Bookmark the permalink.

6 Responses to Validating Credit Card Numbers with Zend Framework

  1. Jade Robbins says:

    ISBN’s use checksums too :D

  2. will says:

    the Zend framework (as of 1.7) does not know what cc type you entered.
    Below are the regular expressions that determine the card type. I’m still learning how ZF really comes together, but I know these expressions are tried and true.

    Visa = /^\4[0-9]{12}([0-9]{3})?$/x

    MasterCard = /^\5[0-9]{15}$/x

    Does anyone know of a way to make the ZF work with a payment gateway?

  3. Mark Sanborn says:

    The only problem with this is that it doesn’t use the Luhn Algorithm.

  4. will says:

    Right…
    The luhn check confirms the card number is valid.
    The regular expressions I provided are simply meant as a method of detecting the card type.

    Never process a card without running the luhn check against it!

  5. Mark Sanborn says:

    Ahh, sorry I was thinking you were suggesting the regex as a replacement to the Zend functions. I will look into the Zend framework later tonight tommorow and see if I can get it to tell me what type of card was ran.

    You can usually tell by the first couple of digits on the number sequence.

  6. Pingback: How SINs (and Credit Card Numbers) Are Validated :: Dammit Jim!

© 2011 All rights reserved

1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|37|38|39|40|41|42|43|44|45|46|47|48|49|50|51|52|53|54|55|56|57|58|59|60|61|62|63|64|65|66|67|68|69|70|71|72|73|74|75|76|77|78|79|80|81|82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97|98|99|100|101|102|103|104|105|106|107|108|109|110|111|112|113|114|115|116|117|118|119|120|121|122|123|124|125|126|127|128|129|130|131|132|133|134|135|136|137|138|139|140|141|142|143|144|145|146|147|148|149|150|151|152|153|154|155|156|157|158|159|160|161|162|163|164|165|166|167|168|169|170|171|172|173|174|175|176|177|178|179|180|181|182|183|184|185|186|187|188|189|190|191|192|193|194|195|196|197|198|199|200|201|202|203|204|205|206|207|208|209|210|211|212|213|214|215|216| generic buying erythromycin alesse next day delivery without a prescription motilium no prescription needed buy cytotec pills canadian pharmacy no prescription needed provera actos by internet buying orlistat pharmacy without prescription lisinopril no prescription needed purchase femara medication buy lipitor cod actonel buy online cheap buy carbozyne online without prescription femara prescription discounts elavil without prescriptions pills buying isotretinoin online pharmacy trazodone no prescription order no prescription metformin birth control no prescriptionAccutane Online Doxycycline online Buy Cheap Lexapro Online No Prescription Prednisone Online Buy Accutane No Prescription