本文实例讲述了php实现通用的信用卡验证类。分享给大家供大家参考。
原文说明如下:
Credit Card Validation Solution (PHP Edition)
Version 3.5
Description
Credit Card Validation Solution™ uses a four step process to ensure credit card numbers are keyed in correctly. This procedure accurately checks cards from American Express, Australian BankCard, Carte Blache, Diners Club, Discover/Novus, JCB, MasterCard and Visa.
For more information, please read the comments in the code itself.
Installation Instructions
Select the text between the two lines indicated, below.
Copy the text.
Open up a text editor.
Paste the text.
Save that file. When saving it, make sure to:
save it in a directory on your webserver, and
name it with an extension that your server will recognize needs parsing by PHP.
To see it in action, open up that file in your web browswer.
具体代码如下:
<?php # ------------------------------------------------------------------------ # Credit Card Validation Solution, version 3.5 PHP Edition # 25 May 2000 # # COPYRIGHT NOTICE: # a) This code is property of The Analysis and Solutions Company. # b) It is being distributed free of charge and on an "as is" basis. # c) Use of this code, or any part thereof, is contingent upon leaving # this copyright notice, name and address information in tact. # d) Written permission must be obtained from us before this code, or any # part thereof, is sold or used in a product which is sold. # e) By using this code, you accept full responsibility for its use # and will not hold the Analysis and Solutions Company, its employees # or officers liable for damages of any sort. # f) This code is not to be used for illegal purposes. # g) Please email us any revisions made to this code. # # Copyright 2000 http://www.AnalysisAndSolutions.com/code/ # The Analysis and Solutions Company info@AnalysisAndSolutions.com # ------------------------------------------------------------------------ # # DESCRIPTION: # Credit Card Validation Solution uses a four step process to ensure # credit card numbers are keyed in correctly. This procedure accurately # checks cards from American Express, Australian BankCard, Carte Blache, # Diners Club, Discover/Novus, JCB, MasterCard and Visa. # # CAUTION: # CCVS uses exact number ranges as part of the validation process. These # ranges are current as of 20 October 1999. If presently undefined ranges # come into use in the future, this program will improperly deject card # numbers in such ranges, rendering an error message entitled "Potential # Card Type Discrepancy." If this happens while entering a card & type # you KNOW are valid, please contact us so we can update the ranges. # # POTENTIAL CUSTOMIZATIONS: # * If you don't accept some of these card types, edit Step 2, using pound # signs "#" to comment out the "elseif," "$CardName" and "$ShouldLength" # lines in question. # * Additional card types can be added by inserting new "elseif," # "$CardName" and "$ShouldLength" lines in Step 2. # * The three functions here can be called by other PHP documents to check # any number. # # CREDITS: # We learned of the Mod 10 Algorithm in some Perl code, entitled # "The Validator," available on Matt's Script Archive, # http://worldwidemart.com/scripts/readme/ccver.shtml. That code was # written by David Paris, who based it on material Melvyn Myers reposted # from an unknown author. Paris credits Aries Solis for tracking down the # data underlying the algorithm. At the same time, our code bears no # resemblance to its predecessors. CCValidationSolution was first written # for Visual Basic, on which Allen Browne and Rico Zschau assisted. # Neil Fraser helped prune down the OnlyNumericSolution() for Perl. 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"; # # ------------ END SAMPLE USER INTERFACE SECTION ------------- ?>
希望本文所述对大家的php程序设计有所帮助。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Dreamweaver Mac版
視覺化網頁開發工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

記事本++7.3.1
好用且免費的程式碼編輯器