php实现通用的信用卡验证类

 这篇文章主要介绍了php实现通用的信用卡验证类,涉及信用卡的规则与php字符串操作的相关技巧,具有一定参考借鉴价值,文中有英文原文注释说明,有助于更直观的了解源码相关信息,需要的朋友可以参考下

 
 

本文实例讲述了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.

具体代码如下:

?

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

<?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程序设计有所帮助。

时间: 2024-09-18 21:25:19

php实现通用的信用卡验证类的相关文章

php实现通用的信用卡验证类_php技巧

本文实例讲述了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 c

通用表单验证函数

表单验证|函数 不管是动态网站,还是其它B/S结构的系统,都离不开表单表单做为客户端向服务器提交数据的载体担当相当重要的角色.这就引出了一个问题,提交的数据合法吗?摆在我们面前的问题就是验证这些数据保证所提交的数据是合法的.所以,我们写了一个大堆的验证函数.当我们开始新的一个项目的开发时,我们又得写一大堆的验证函数,然后再调试这一大堆的函数... 本文将介绍一种方法来提高我的代码的可重用性,提高我们的开发效率. 个人以为表单的验证应该包含两部分:第一,判断用户输入的数据是否合法.第二,提示用户你

实用代码分析:JavaScript通用表单验证函数

javascript|表单验证|函数 Check.js   JS函数文件/////////////////////////////////////////////////////////////////////////////////* *--------------- 客户端表单通用验证CheckForm(oForm) ----------------- * 功能:通用验证所有的表单元素. * 使用: *    <form name="form1" > *    <

javascript实现通用表单验证函数

javascript|表单验证|函数 不管是动态网站,还是其它B/S结构的系统,都离不开表单表单做为客户端向服务器提交数据的载体担当相当重要的角色.这就引出了一个问题,提交的数据合法吗?摆在我们面前的问题就是验证这些数据保证所提交的数据是合法的.所以,我们写了一个大堆的验证函数.当我们开始新的一个项目的开发时,我们又得写一大堆的验证函数,然后再调试这一大堆的函数... 本文将介绍一种方法来提高我的代码的可重用性,提高我们的开发效率. 个人以为表单的验证应该包含两部分:第一,判断用户输入的数据是否

Jquery 表单验证类介绍与实例

 代码如下: <form action="" method="post" id="formValidate">  数值:<input name="" type="text" validate="number" /><span></span><br/>  浮点型:<input name="" type=&

Jquery 表单验证类介绍与实例_jquery

[html] 复制代码 代码如下: <form action="" method="post" id="formValidate"> 数值:<input name="" type="text" validate="number" /><span></span><br/> 浮点型:<input name="&quo

dao-关于如何设计一个通用DAO和验证框架 及几个问题

问题描述 关于如何设计一个通用DAO和验证框架 及几个问题 工作中遇到的几个问题,自己不太有把握,请大家不吝赐教,可以讨论,非常着急,最好能有比较详细的代码,在此万分感谢了!! 在JavaEE的开发中,一个比较好的做法是采用通用的DAO,其中包含类似 save.delete.findXXX.countXXX之类的方法. 请设计和编写一个通用DAO,它继承自Hibernate, 其中包含delete. findById. findByExample.countByExample等方法. 其中 fi

php编写的一个E-mail验证类

 这篇文章主要介绍了php编写的一个E-mail验证类的用法,非常的简单实用,需要的小伙伴参考下,可以直接拿走使用.     这个类可以用来检查电子邮件是否有效使用SMTP协议. 它可以连接到由地址的域名来验证的MX记录中定义的SMTP服务器. 并且模拟消息的传递,以查看是否在给定的收件人地址被接受为有效. ? 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 <!DOCTYPE HTML PUBLIC "-

PHP常用的表单验证类

PHP动态网页开发中常用的表单验证类 以下为引用的内容: <?php class class_post { //验证是否为指定长度的字母/数字组合 function fun_text1($num1,$num2,$str) { Return (preg_match("/^[a-zA-Z0-9]{".$num1.",".$num2."}$/",$str))?true:false; } //验证是否为指定长度数字 function fun_tex