信用卡验证程序 [英] credit card validation routine

查看:131
本文介绍了信用卡验证程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我的一位朋友在他的信用卡验证程序中有问题

这可能是一个简单的事情要解决,但我找不到它。

这与到期日有关。

会发生什么事情,因为每个月过去,那个月就不会被认为是有效的,即使是
虽然这一年仍然有效。

即输入月份的数量必须大于当月的数量

。因此,如果它现在是8月,那么09/2005将是有效的,但是b / 2005年的b $ b将被拒绝。

以下引用的是代码,任何人都可以理解这个问题吗?

谢谢!


< HTML>

< HEAD><标题>安全信用卡交易< / TITLE>

< / HEAD>

< BODY BGCOLOR =" #FFFF00">

< script language =" JAVASCRIPT">

<! -

//此函数验证入境信用卡

信息

function _vet(){

var thisyear;

var thismonth;

var thisdate;

var CCname = document.Final.CardHolder.value;

var CCmonth =

document.Final.ExpMonth.options [document.Final.ExpMonth.selectedIndex] .value;

var CCyear =

document.Final.ExpYear.options [document.Final.ExpYear.selectedIndex] .value;

var CCval = document.Final.CCNo.value;

var C. Ctype =

document.Final.CreditCard.options [document.Final.CreditCard.selectedIndex] .value;

var failed = false;

//检查是否已输入信用卡名称

if(failed == false)

{

if(CCname =="" ;)

{

提醒(请在卡片上输入姓名);

failed = true;

}

}


//检查信用卡号码是否已输入


if(failed ==假)

{

if(CCval =="")


{

提醒(请输入信用卡号码);

失败= true;

}

}


//检查是否已输入信用卡类型


if(failed == false)

{

if(CCtype ==" ")

{

alert(请选择信用卡类型);

failed = true;

}

}


//检查是否已输入卡到期月


if(failed = = false)

{

if(CCmonth ==" Mn")

{

alert(" ;请输入信用卡到期月份);

失败=真;

}

}


//检查是否已输入卡到期年份


if(failed == false)

{

if( CCyear ==" Yr")

{

alert(请输入信用卡到期年份);

failed = true;

}

}


CCval = _strip_spaces(CCval);


/ /检查信用卡号码是否实际为数字

if(_isinteger(CCval)== false)

{

alert(" Credit)卡号必须是数字值

有或没有空格补间数字组);

失败=真;

}

如果(失败==假)

{

//检查4242 4242 4242 4242

if(CCval ==" 4242424242424242")

{

alert(你提供的信用卡号码是

不正确);

failed = true;

}

}


if(failed == false)

{

}

if(failed == false)

{

//检查信用卡号是否有效

if( CC_Validate(CCval)== true)

{


//现在检查日期是否有效,即大于或等于现在

thisdate = new Date();

thisyear = thisdate.getYear()+ 1900;

thismonth = thisdate.getMonth();

if((CCmonth< = thismonth)&& (CCyear< =

今年))

{

提醒(您的信用卡已过期);

failed = true;

}

}

else

{alert("信用卡)你提供的数字是

不正确);

失败=真;

}

if(failed == false)

document.Final.submit();

}

}


函数_strip_spaces (_ipstr)

{

var _opstr ='''';

var i;

for(i = 1; i< = _ipstr.length; i ++)

{

if(_ipstr.substring(i-1,i)!='''')

_opstr = _opstr + _ipstr.substring(i-1,i);

}

返回_opstr;

}


函数_isinteger(test_string){

var i;

var non_nums = 0;

for(i = 1; i< test_string.length; i ++){

if((test_string.substring(i-1,i)<''0'')||

(test_string.subs tring(i-1,i)>''9''))

non_nums ++;

}


if( non_nums == 0)

返回true;

else

返回false;

}


函数CC_Validate(ccnumber){

var checksum = 0;

var i;

var digit;

var temp;


var cclength = ccnumber.length;

if(cclength%2!= 0)

{

cclength + = 1;

ccnumber =" 0" + ccnumber;

}


for(i = 0; i< cclength; i ++){

digit = parseInt( ccnumber.charAt(i));

if((i%2)== 0){

digit * = 2;

if (数字> 9)

digit = parseInt(数字/ 10)+ parseInt(数字

%10);

}

校验和+ =数字;

}

if(校验和%10 == 0)

返回true;

else

返回false;

}


// - >

< / script>


< FORM METHOD =" POST" ACTION =" process.cfm" NAME =" Final"

< INPUT TYPE =" HIDDEN" NAME =" MEMBERSHIP"

VALUE =" ">

< INPUT TYPE =" HIDDEN" NAME =

" APPLICATION_TYPE" VALUE = ">

< INPUT TYPE =" HIDDEN" NAME =" TITLE1"价值

=" ">

< INPUT TYPE =" HIDDEN" NAME =" FIRST_NAME1"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" LAST_NAME1"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" TITLE2"价值

=" ">

< INPUT TYPE =" HIDDEN" NAME =" FIRST_NAME2"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" LAST_NAME2"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" STREET" VALUE

="">

< INPUT TYPE =" HIDDEN" NAME =" TOWN" VALUE =

"">

< INPUT TYPE =" HIDDEN" NAME =" REGION&qu​​ot; VALUE

="">

< INPUT TYPE =" HIDDEN" NAME =" POST_CODE"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" COUNTRY" VALUE

="">

< INPUT TYPE =" HIDDEN" NAME =" TELEPHONE_NO"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" FAX_NO" VALUE

="">

< INPUT TYPE =" HIDDEN" NAME =" EMAIL_ADDRESS"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" COMMENTS"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" WHERE_FROM"

VALUE ="">

< INPUT TYPE =" HIDDEN" NAME =" OTHER" VALUE =

"">


< INPUT TYPE =" HIDDEN" NAME =" SS_TO" VALUE =" ma ** @ address.com">

< INPUT TYPE =" HIDDEN" NAME =" SS_SUBJECT" VALUE =会员信用卡

安全订单>

< INPUT TYPE =" HIDDEN" NAME =" SS_NEXTPAGE"

VALUE =" http://website/thanks.html">


< CENTER>< FONT FACE =Comic Sans MS SIZE =" + 2"

COLOR ="#FF0000">< B>< I>您的信用卡明细< / I>< / B>< / FONT> < / CENTER>

< BR>

< FONT FACE =" Comic Sans MS" SIZE =" + 1" COLOR ="#0000FF">请在下面输入您的

信用卡详情。为避免您的

订单出现任何不必要的延误,请确认您的所有卡详细信息都是正确的

点击付款字样。按钮。谢谢。< / FONT>

< HR WIDTH =" 100%" ALIGN = QUOT;中心" SIZE =" 2"


< table>

< tr>

< td>< FONT FACE =Comic Sans MS SIZE =" + 1" COLOR ="#0000FF">卡上的名字

:< / font>< / td>

< td>< input name ="持卡人QUOT; size = 50 maxlength = 50>< / td>

< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>

< td>< FONT FACE =" Comic Sans MS" SIZE =" + 1" COLOR ="#0000FF">卡号

:< / font>< / td>

< td><输入名称=" CCNo" ; size =" 25">< / font>< / td>

< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>

< td>< FONT FACE =" Comic Sans MS" SIZE =" + 1" COLOR ="#0000FF">卡片类型

:< / font>< / td>

< td>< select name =" CreditCard" ;>

< option value =" ">

< option> VISA

< option> Mastercard

< / select>< / td>

< / tr>

< tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< ; td>< FONT FACE =" Comic Sans MS" SIZE =" + 1" COLOR ="#0000FF">到期日

:< / font>< / td>

< td>

< FONT FACE =" Comic Sans MS" SIZE =" + 1" COLOR ="#0000FF"> Month< / font>

< SELECT NAME =" ExpMonth">

< OPTION VALUE =" Mn" > Mn< / OPTION>

< OPTION VALUE =" 01"> 01< / OPTION>

< OPTION VALUE =" 02"> 02< / OPTION>

< OPTION VALUE =" 03"> 03< / OPTION>

< OPTION VALUE =" 04"> 04< / OPTION>

< OPTION VALUE =" 05"> 05< / OPTION>

< OPTION VALUE =" 06"> 06< / OPTION> ;

< OPTION VALUE =" 07"> 07< / OPTION>

< OPTION VALUE =" 08"> 08< / OPTION>

< OPTION VALUE =" 09"> 09< / OPTION>

< OPTION VALUE =" 10"> 10< / OPTION>
< OPTION VALUE =" 11"> 11< / OPTION>

< OPTION VALUE =" 12"> 12< / OPTION>

< / SELECT>

&l t; FONT FACE =Comic Sans MS SIZE =" + 1" COLOR ="#0000FF"> Year< / font>

< SELECT NAME =" ExpYear">

< OPTION VALUE =" Yr" > Yr< / OPTION>

< OPTION value =" 1998"> 1998< / OPTION>

< OPTION value =" 1999"> 1999< / OPTION>

< OPTION value =" 2000"> 2000< / OPTION>

< OPTION value =" 2001"> 2001< / OPTION>

< OPTION value =" 2002"> 2002< / OPTION>

< OPTION value =" 2003"> 2003< / OPTION> ;

< OPTION value =" 2004"> 2004< / OPTION>

< OPTION value =" 2005"> 2005< / OPTION>

< OPTION value =" 2006"> 2006< / OPTION>

< OPTION value =" 2007"> 2007< / OPTION>

< OPTION value =" 2008"> 2008< / OPTION>

< OPTION value =" 2009"> 2009< / OPTIO N>

< OPTION value =" 2010"> 2010< / OPTION>

< / SELECT>

< / td>

< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>< / tr>

< tr>

< td>< / td>

< td>< INPUT TYPE ="按钮" VALUE =付款 OnClick =

" _vet()">< / td>

< / tr>

< tr>< ; / tr>

< tr>< / tr>

< tr>< / tr>

< tr> < / tr>

< tr>< / tr>

< tr>< / tr>

< tr> ;

< td>< / td>

< td align = left>< INPUT TYPE =" Reset">< / td>

< / tr>

< / table>

< / FORM>

< BR>

< BR>

< / HTML>


A friend of mine has a problem with his credit card validation routine
and it is probably a simple thing to solve but I cannot find it.
It has to do with the expiry dates.
What happens is that as each month passes, that month is then not
recognised as being valid, even though the year makes it still valid.
i.e. the number of the month entered has to be bigger than the number
of the current month. Therefor, if it is in august now 09/2005 wil be
valid but
08/2005 will be rejected.
Below quoted is the code, could anybody make sense of this problem?
Thanks!

<HTML>
<HEAD><TITLE>Secure Credit Card Transaction</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFF00">
<script language="JAVASCRIPT">
<!--
//This function validates entry credit card
information
function _vet(){
var thisyear;
var thismonth;
var thisdate;
var CCname = document.Final.CardHolder.value;
var CCmonth =
document.Final.ExpMonth.options[document.Final.ExpMonth.selectedIndex].value;
var CCyear =
document.Final.ExpYear.options[document.Final.ExpYear.selectedIndex].value;
var CCval = document.Final.CCNo.value;
var CCtype =
document.Final.CreditCard.options[document.Final.CreditCard.selectedIndex].value;
var failed = false;
// check if credit card name has been entered
if (failed == false)
{
if (CCname == "")
{
alert("Please enter name on card");
failed = true;
}
}

// check if credit card number has been entered

if (failed == false)
{
if (CCval == "")

{
alert ("Please enter credit card number");
failed = true;
}
}

// check if credit card type has been entered

if (failed == false)
{
if (CCtype == " ")
{
alert("Please select credit card type");
failed = true;
}
}

//Check if card expiry month has been entered

if (failed == false)
{
if (CCmonth == "Mn")
{
alert("Please enter credit card expiry month");
failed = true;
}
}

//Check if card expiry year has been entered

if (failed == false)
{
if (CCyear == "Yr")
{
alert("Please enter credit card expiry year");
failed = true;
}
}

CCval = _strip_spaces(CCval);

// check if credit card number is actually a number
if (_isinteger(CCval) == false)
{
alert("Credit Card number must be a numeric value only
with or without spaces in between the groups of numbers");
failed = true;
}
if (failed == false)
{
// check for 4242 4242 4242 4242

if (CCval == "4242424242424242")
{
alert ("The credit card number you supplied is
incorrect");
failed = true;
}
}

if (failed == false)
{
}
if (failed == false)
{
//check that the credit card number is valid
if (CC_Validate(CCval) == true)
{

//now check that the date is valid i.e. greater or equal to now
thisdate = new Date();
thisyear = thisdate.getYear() + 1900;
thismonth = thisdate.getMonth();
if ((CCmonth <= thismonth) && (CCyear <=
thisyear))
{
alert("Your credit card has expired");
failed = true;
}
}
else
{ alert("The credit card number you supplied is
incorrect");
failed = true;
}
if (failed == false)
document.Final.submit();
}
}

function _strip_spaces(_ipstr)
{
var _opstr = '''';
var i;
for (i = 1; i <= _ipstr.length; i++)
{
if(_ipstr.substring(i-1, i) != '' '')
_opstr = _opstr + _ipstr.substring(i-1, i);
}
return _opstr;
}

function _isinteger(test_string){
var i;
var non_nums = 0;
for (i = 1; i < test_string.length; i++){
if ((test_string.substring(i-1,i) < ''0'') ||
(test_string.substring(i-1,i) > ''9''))
non_nums++;
}

if (non_nums == 0)
return true;
else
return false;
}

function CC_Validate(ccnumber){
var checksum = 0;
var i;
var digit;
var temp;

var cclength=ccnumber.length;
if (cclength % 2 != 0)
{
cclength += 1;
ccnumber = "0" + ccnumber;
}

for (i = 0; i < cclength; i++){
digit = parseInt(ccnumber.charAt(i));
if ((i % 2) == 0){
digit *= 2;
if (digit > 9)
digit = parseInt(digit / 10) + parseInt(digit
% 10);
}
checksum += digit;
}
if (checksum % 10 == 0)
return true;
else
return false;
}

//-->
</script>

<FORM METHOD = "POST" ACTION = "process.cfm" NAME = "Final">
<INPUT TYPE = "HIDDEN" NAME = "MEMBERSHIP"
VALUE = " ">
<INPUT TYPE = "HIDDEN" NAME =
"APPLICATION_TYPE" VALUE = " ">
<INPUT TYPE = "HIDDEN" NAME = "TITLE1" VALUE
= " ">
<INPUT TYPE = "HIDDEN" NAME = "FIRST_NAME1"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "LAST_NAME1"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "TITLE2" VALUE
= " ">
<INPUT TYPE = "HIDDEN" NAME = "FIRST_NAME2"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "LAST_NAME2"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "STREET" VALUE
= "">
<INPUT TYPE = "HIDDEN" NAME = "TOWN" VALUE =
"">
<INPUT TYPE = "HIDDEN" NAME = "REGION" VALUE
= "">
<INPUT TYPE = "HIDDEN" NAME = "POST_CODE"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "COUNTRY" VALUE
= "">
<INPUT TYPE = "HIDDEN" NAME = "TELEPHONE_NO"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "FAX_NO" VALUE
= "">
<INPUT TYPE = "HIDDEN" NAME = "EMAIL_ADDRESS"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "COMMENTS"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "WHERE_FROM"
VALUE = "">
<INPUT TYPE = "HIDDEN" NAME = "OTHER" VALUE =
"">

<INPUT TYPE="HIDDEN" NAME="SS_TO" VALUE="ma**@address.com">
<INPUT TYPE="HIDDEN" NAME="SS_SUBJECT" VALUE="Membership Credit Card
Secure Order">
<INPUT TYPE="HIDDEN" NAME="SS_NEXTPAGE"
VALUE="http://website/thanks.html">

<CENTER><FONT FACE="Comic Sans MS" SIZE="+2"
COLOR="#FF0000"><B><I>Your Credit Card Details</I></B></FONT></CENTER>
<BR>
<FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Please enter your
Credit Card details below. To avoid any unnecessary delays to your
order, please verify that all your card details are correct before
clicking the "Make Payment" button. Thank you.</FONT>
<HR WIDTH="100%" ALIGN="Center" SIZE="2">

<table>
<tr>
<td><FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Name On Card
:</font></td>
<td><input name="CardHolder" size=50 maxlength=50></td>
</tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr>
<td><FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Card Number
:</font></td>
<td><input name="CCNo" size="25"></font></td>
</tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr>
<td><FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Card Type
:</font></td>
<td><select name="CreditCard">
<option value=" ">
<option>VISA
<option>Mastercard
</select></td>
</tr>
<tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<td><FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Expiry Date
:</font></td>
<td>
<FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Month</font>
<SELECT NAME = "ExpMonth">
<OPTION VALUE = "Mn">Mn</OPTION>
<OPTION VALUE = "01">01</OPTION>
<OPTION VALUE = "02">02</OPTION>
<OPTION VALUE = "03">03</OPTION>
<OPTION VALUE = "04">04</OPTION>
<OPTION VALUE = "05">05</OPTION>
<OPTION VALUE = "06">06</OPTION>
<OPTION VALUE = "07">07</OPTION>
<OPTION VALUE = "08">08</OPTION>
<OPTION VALUE = "09">09</OPTION>
<OPTION VALUE = "10">10</OPTION>
<OPTION VALUE = "11">11</OPTION>
<OPTION VALUE = "12">12</OPTION>
</SELECT>
<FONT FACE="Comic Sans MS" SIZE="+1" COLOR="#0000FF">Year</font>
<SELECT NAME = "ExpYear">
<OPTION VALUE = "Yr">Yr</OPTION>
<OPTION value = "1998">1998</OPTION>
<OPTION value = "1999">1999</OPTION>
<OPTION value = "2000">2000</OPTION>
<OPTION value = "2001">2001</OPTION>
<OPTION value = "2002">2002</OPTION>
<OPTION value = "2003">2003</OPTION>
<OPTION value = "2004">2004</OPTION>
<OPTION value = "2005">2005</OPTION>
<OPTION value = "2006">2006</OPTION>
<OPTION value = "2007">2007</OPTION>
<OPTION value = "2008">2008</OPTION>
<OPTION value = "2009">2009</OPTION>
<OPTION value = "2010">2010</OPTION>
</SELECT>
</td>
</tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr>
<td></td>
<td><INPUT TYPE = "Button" VALUE = " Make Payment" OnClick =
"_vet()"></td>
</tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr>
<td></td>
<td align=left><INPUT TYPE = "Reset"></td>
</tr>
</table>
</FORM>
<BR>
<BR>
</HTML>

推荐答案

dries写道:
dries wrote:
我的一个朋友在他的信用卡验证程序中有问题
这可能是一个简单的事情要解决,但我找不到它。
这与到期日有关。
随着每个月的过去,那个月被认为是有效的,即使这一年仍然是有效的。 id。
即输入的月份数必须大于当月的数量
。因此,如果它现在是8月,那么09/2005将会有效但是08/2005将被拒绝。
下面引用的是代码,任何人都可以理解这个问题吗? />谢谢!
//现在检查日期是否有效,即大于或等于现在
thisdate = new Date();
thisyear = thisdate.getYear()+ 1900;
thismonth = thisdate.getMonth();
if((CCmonth< = thismonth)&&(CCyear< =
thisyear))
A friend of mine has a problem with his credit card validation routine
and it is probably a simple thing to solve but I cannot find it.
It has to do with the expiry dates.
What happens is that as each month passes, that month is then not
recognised as being valid, even though the year makes it still valid.
i.e. the number of the month entered has to be bigger than the number
of the current month. Therefor, if it is in august now 09/2005 wil be
valid but
08/2005 will be rejected.
Below quoted is the code, could anybody make sense of this problem?
Thanks!
//now check that the date is valid i.e. greater or equal to now
thisdate = new Date();
thisyear = thisdate.getYear() + 1900;
thismonth = thisdate.getMonth();
if ((CCmonth <= thismonth) && (CCyear <=
thisyear))



thisdate = new Date();

thisdate.setMonth(thisdate.getMonth()+ 1)

thisyear = thisdate.getFullYear()

thismonth = thisdate.getMonth();

if((CCmonth< = thismonth)&&(CCyear< = thisyear))


我不确定上面的陈述,但看起来不错。


Mick



thisdate = new Date();
thisdate.setMonth(thisdate.getMonth()+1)
thisyear = thisdate.getFullYear()
thismonth = thisdate.getMonth();
if ((CCmonth <= thismonth) && (CCyear <= thisyear))

I''m not sure about the statement above, but it looks wrong.

Mick


Mick White写道:
Mick White wrote:

if((CCmonth< = thismonth)&&(CCyear< = thisyear))

if ((CCmonth <= thismonth) && (CCyear <= thisyear))

I''m not sure about the statement above, but it looks wrong.



你是对的,这是错的。它应该是:

if(((CCyear == thisyear)&&(CCmonth< thismonth))||

((CCyear< thisyear)) )

//过期的卡片。剪刀时间。


-

jmm dash list(at)sohnen-moe(dot)com

(删除.AXSPAMGN电子邮件)


You are correct, it is wrong. It should be:
if (((CCyear == thisyear) && (CCmonth < thismonth)) ||
((CCyear < thisyear)))
// Expired card. Scissor time.

--
jmm dash list (at) sohnen-moe (dot) com
(Remove .AXSPAMGN for email)


JRS:文章< 6l ************************* *******@4ax.com> ;,日期

周五,2004年8月13日15:48:35,见于新闻:comp.lang.javascript,干涸

< dr *** @ driesbessels.removebeforeuse.com>发表:
JRS: In article <6l********************************@4ax.com>, dated
Fri, 13 Aug 2004 15:48:35, seen in news:comp.lang.javascript, dries
<dr***@driesbessels.removebeforeuse.com> posted :

我的一个朋友在他的信用卡验证程序中遇到问题
这可能是一个简单的事情要解决,但我找不到它。


你的朋友没有足够的能力被委以财务

软件。

这与到期日有关。
会发生的是,每个月过去,那个月就不会被认为是有效的,即使年份仍然有效。
即输入的月份数必须大于当月的数量
。因此,如果现在是在2005年9月,那将是有效的,但是将于2005年5月被拒绝。


我认为你的意思是它显然会提前一个月到期。


< script language =" JAVASCRIPT">


已弃用。

var CCname = document.Final.CardHolder.value;
var CCmonth =
document.Final.ExpMonth。 options [document.Final.ExpMonth.selectedIndex] .value;
var CCyear =
document.Final.ExpYear.options [document.Final.ExpYear.selectedIndex] .value;
var CCval = document.Final.CCNo.value;
var CCt​​ype =
document.Final.CreditCard.options [document.Final.CreditCard.selectedIndex] .value
;


这些是字符串。使用... = + ...来获取数字。

var failed = false;
//检查是否输入了信用卡名称
if(failed == false) )


应该是if(!failed)//贯穿始终。


//现在检查日期是否有效,即大于或等于现在
thisdate = new Date();
thisyear = thisdate.getYear()+ 1900;


在某些系统上给出了错误的答案,AIUI。请参阅常见问题解答& sig。

thismonth = thisdate.getMonth();


给0..11 - 这就是你看到的问题。添加1.


if((CCmonth< = thismonth)&&(CCyear< =
thisyear))


有缺陷的逻辑。最简单的解决方法是使用类似

if(CCyear * 12 + CCmonth< thisyear * 12 + thismonth)//< = ??


function _isinteger(test_string){
var i;
var non_nums = 0;
for(i = 1; i< test_string.length; i ++){
if((test_string) .substring(i-1,i)<''0'')||
(test_string.substring(i-1,i)>''9''))
non_nums ++;
}

如果(non_nums == 0)
返回true;

返回false;


返回non_nums == 0 //更简单。

}


但是可以测试所有 - 一个数字,或者其他什么,更容易用一个

RegExp,比如


函数isI(S){return / ^ \d +

A friend of mine has a problem with his credit card validation routine
and it is probably a simple thing to solve but I cannot find it.
Your friend is not competent enough to be entrusted with financial
software.
It has to do with the expiry dates.
What happens is that as each month passes, that month is then not
recognised as being valid, even though the year makes it still valid.
i.e. the number of the month entered has to be bigger than the number
of the current month. Therefor, if it is in august now 09/2005 wil be
valid but
08/2005 will be rejected.
I think you mean that it apparently expires one month early.

<script language="JAVASCRIPT">
Deprecated.
var CCname = document.Final.CardHolder.value;
var CCmonth =
document.Final.ExpMonth.options[document.Final.ExpMonth.selectedIndex].value;
var CCyear =
document.Final.ExpYear.options[document.Final.ExpYear.selectedIndex].value;
var CCval = document.Final.CCNo.value;
var CCtype =
document.Final.CreditCard.options[document.Final.CreditCard.selectedIndex].value
;
Those are strings. Use ... = + ... to get Numbers.
var failed = false;
// check if credit card name has been entered
if (failed == false)
Should be if (!failed) // throughout.

//now check that the date is valid i.e. greater or equal to now
thisdate = new Date();
thisyear = thisdate.getYear() + 1900;
Gives wrong answer on some systems, AIUI. See via FAQ & sig.
thismonth = thisdate.getMonth();
Gives 0..11 - this the problem that you have seen. Add 1.

if ((CCmonth <= thismonth) && (CCyear <=
thisyear))
Flawed logic. The simplest fix is to use something like
if ( CCyear*12 + CCmonth < thisyear*12 + thismonth) // <= ??

function _isinteger(test_string){
var i;
var non_nums = 0;
for (i = 1; i < test_string.length; i++){
if ((test_string.substring(i-1,i) < ''0'') ||
(test_string.substring(i-1,i) > ''9''))
non_nums++;
}
if (non_nums == 0)
return true;
else
return false;
return non_nums == 0 // is simpler.
}
But one can test for all-digit, or whatever, much more easily with a
RegExp, like

function isI(S) { return /^\d+


这篇关于信用卡验证程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆