php 一个通用信用卡验证类
内容摘要
这篇文章主要为大家详细介绍了php 一个通用信用卡验证类,具有一定的参考价值,可以用来参考一下。
对一个通用的信用卡验证php类对此感兴趣的朋友,看看idc笔记做的技术笔记!一个
对一个通用的信用卡验证php类对此感兴趣的朋友,看看idc笔记做的技术笔记!一个
文章正文
这篇文章主要为大家详细介绍了php 一个通用信用卡验证类,具有一定的参考价值,可以用来参考一下。
对一个通用的信用卡验证php类对此感兴趣的朋友,看看idc笔记做的技术笔记!一个通用的信用卡验证的PHP类 信用卡验证解决方案(PHP版) 3.5版描述 信用卡验证解决方案?采用了四步过程,以确保信用卡号码键入正确。这个程序准确地从美国运通,澳大利亚银行卡,点菜布拉切,大莱卡,发现/诺瓦斯,JCB,MasterCard和Visa卡检查。 欲了解更多信息,请阅读代码本身的注释。安装说明 选择所指出的,下面的两行之间的文本。 复制的文本。 打开一个文本编辑器。 粘贴的文本。 保存该文件。当保存,确保: 它保存在网络服务器上的目录,并 与你的服务器会识别需要通过PHP解析扩展的名字。 要看到它在行动,在你的网页browswer打开该文件。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 | <code class = "php" > /** * 一个通用的信用卡验证php类 * * @param * @arrange 512-笔记网: www.512Pic.com **/ function CCValidationSolution ( $Number ) { global $CardName ; # 1) Get rid of spaces and non-numeric characters. $Number = OnlyNumericSolution( $Number ); # 2) Do the first four digits fit within proper ranges? # If so, who's the card issuer and how long should the number be? $NumberLeft = substr ( $Number , 0, 4); $NumberLength = strlen ( $Number ); if ( $NumberLeft >= 3000 and $NumberLeft <= 3059) { $CardName = "Diners Club" ; $ShouldLength = 14; } elseif ( $NumberLeft >= 3600 and $NumberLeft <= 3699) { $CardName = "Diners Club" ; $ShouldLength = 14; } elseif ( $NumberLeft >= 3800 and $NumberLeft <= 3889) { $CardName = "Diners Club" ; $ShouldLength = 14; } elseif ( $NumberLeft >= 3400 and $NumberLeft <= 3499) { $CardName = "American Express" ; $ShouldLength = 15; } elseif ( $NumberLeft >= 3700 and $NumberLeft <= 3799) { $CardName = "American Express" ; $ShouldLength = 15; } elseif ( $NumberLeft >= 3528 and $NumberLeft <= 3589) { $CardName = "JCB" ; $ShouldLength = 16; } elseif ( $NumberLeft >= 3890 and $NumberLeft <= 3899) { $CardName = "Carte Blache" ; $ShouldLength = 14; } elseif ( $NumberLeft >= 4000 and $NumberLeft <= 4999) { $CardName = "Visa" ; if ( $NumberLength > 14) { $ShouldLength = 16; } elseif ( $NumberLength < 14) { $ShouldLength = 13; } else { echo "<br /><em>The Visa number entered, $Number, in is 14 digits long.<br />Visa cards usually have 16 digits, though some have 13.<br />Please check the number and try again.</em><br />n" ; return FALSE; } } elseif ( $NumberLeft >= 5100 and $NumberLeft <= 5599) { $CardName = "MasterCard" ; $ShouldLength = 16; } elseif ( $NumberLeft == 5610) { $CardName = "Australian BankCard" ; $ShouldLength = 16; } elseif ( $NumberLeft == 6011) { $CardName = "Discover/Novus" ; $ShouldLength = 16; } else { echo "<br /><em>The first four digits of the number entered are $NumberLeft. <br />If that's correct, we don't accept that type of credit card.<br />If it's wrong, please try again.</em><br />n" ; return FALSE; } # 3) Is the number the right length? if ( $NumberLength <> $ShouldLength ) { $Missing = $NumberLength - $ShouldLength ; if ( $Missing < 0) { echo "<br /><em>The $CardName number entered, $Number, is missing " . abs ( $Missing ) . " digit(s).<br />Please check the number and try again.</em><br />n" ; } else { echo "<br /><em>The $CardName number entered, $Number, has $Missing too many digit(s).<br />Please check the number and try again.</em><br />n" ; } return FALSE; } # 4) Does the number pass the Mod 10 Algorithm Checksum? if (Mod10Solution( $Number ) == TRUE) { return TRUE; } else { echo "<br /><em>The $CardName number entered, $Number, is invalid.<br />Please check the number and try again.</em><br />n" ; return FALSE; } } function OnlyNumericSolution ( $Number ) { # Remove any non numeric characters. # Ensure number is no more than 19 characters long. return substr ( ereg_replace ( "[^0-9]" , "" , $Number ) , 0, 19); } function Mod10Solution ( $Number ) { $NumberLength = strlen ( $Number ); $Checksum = 0; # Add even digits in even length strings # or odd digits in odd length strings. for ( $Location = 1 - ( $NumberLength % 2); $Location < $NumberLength ; $Location += 2) { $Checksum += substr ( $Number , $Location , 1); } # Analyze odd digits in even length strings # or even digits in odd length strings. for ( $Location = ( $NumberLength % 2); $Location < $NumberLength ; $Location += 2) { $Digit = substr ( $Number , $Location , 1) * 2; if ( $Digit < 10) { $Checksum += $Digit ; } else { $Checksum += $Digit - 9; } } # Is the checksum divisible by ten? return ( $Checksum % 10 == 0); } # ----------- BEGIN SAMPLE USER INTERFACE SECTION ------------ # # This section provides a simple sample user interface for the # Credit Card Validation functions. It generates an HTML form # where you enter a card number to check. # # If a number has been posted by the form, check it. if ( isset( $Number ) ) { # Get rid of spaces and non-numeric characters in posted # numbers so they display correctly on the input form. $Number = OnlyNumericSolution( $Number ); if (CCValidationSolution( $Number ) == TRUE) { echo "<br />The $CardName number entered, $Number, <em>is</em> valid.<br />n" ; } } else { $Number = "" ; } # Setup an input form. Posting it calls this page again. echo "<form method=" post " action=" $REQUEST_URI ">n" ; echo "<br />Credit Card Number: <input type=" text " name=" Number " value=" $Number ">n" ; echo "<input type=" Submit " name=" submitr " value=" Check its Validity ">n" ; echo "</form><br />n" ; /*** 来自php教程(www.idcnote.com) ***/ </code> |
注:关于php 一个通用信用卡验证类的内容就先介绍到这里,更多相关文章的可以留意
代码注释