<?
//LUHN ALGORITHM PHP CONVERSION
// CREDIT CARD NUMBER CHECKER BY JACK BELLAMY - JACKBELLAMY.CO.UK
//----------- RETREIVE THE STRING FROM THE FORM POST -------------//
$var = $_POST['cardnumber'];
//----------- SPLIT THE 16 CHARACTOR STRING INTO INDIVIDUAL CHARACTERS AND ASSIGN TO INDIVIDUAL VARIABLES ---------------//
$n0 = $var[0];
$n1 = $var[1];
$n2 = $var[2];
$n3 = $var[3];
$n4 = $var[4];
$n5 = $var[5];
$n6 = $var[6];
$n7 = $var[7];
$n8 = $var[8];
$n9 = $var[9];
$n10 = $var[10];
$n11 = $var[11];
$n12 = $var[12];
$n13 = $var[13];
$n14 = $var[14];
$n15 = $var[15];
// ---------------------CHECKING THE CARDNUMBER FORM POST SUBMITS ALL VALUES PROPERLY
/*
echo $n0;
echo $n1;
echo $n2;
echo $n3;
echo $n4;
echo $n5;
echo $n6;
echo $n7;
echo $n8;
echo $n9;
echo $n10;
echo $n11;
echo $n12;
echo $n13;
echo $n14;
echo $n15;
*/
//-------ASSIGNING THE NEW VARIABLE VALUES ------------//
$n14_new = ($n14*2);
$n12_new = ($n12*2);
$n10_new = ($n10*2);
$n8_new = ($n8*2);
$n6_new = ($n6*2);
$n4_new = ($n4*2);
$n2_new = ($n2*2);
$n0_new = ($n0*2);
//!-----!------!//
//------------------------TESTING WITH THE NEW VARAIBLE *2
/*
echo $n0_new;
echo $n1;
echo $n2_new;
echo $n3;
echo $n4_new;
echo $n5;
echo $n6_new;
echo $n7;
echo $n8_new;
echo $n9;
echo $n10_new;
echo $n11;
echo $n12_new;
echo $n13;
echo $n14_new;
echo $n15;
*/
//--------- THE MATHS FOR THE COMPLETE SUM ------------ //
$isitlegit = ($n0_new+$n1+$n2_new+$n3+$n4_new+$n5+$n6_new+$n7+$n8_new+$n9+$n10_new+$n11+$n12_new+$n13+$n14_new+$n15);
//!----MATHS-----!//
?>
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="veri-styles.css"
</head>
<body>
<div class="container">
<div class="main-wrapper">
<div id ="verification-wrapper">
<form action="" method="post" enctype="application/x-www-form-urlencoded">
<div id="input-holder">
<input name="cardnumber" type="text" class="input-style" placeholder=""> </input>
<button class="button-style">Verify my card</button>
</div>
</form>
<div class="result-class">
<?php
if(isset($isitlegit) && ($isitlegit % 5 == 0)) { // it's good
$new = "<img src='correct.jpg' />";
} elseif(isset($isitlegit) && ($isitlegit % 5 != 0)) { // it's bad
$new = "<img src='incorrect.jpg' />";
} elseif(!isset($isitlegit)) { // make sure this is not set
$new = "<img src='card-number-required.jpg' />";
}
echo $new;
?>
</div>
</div>
</div>
</body>
</html>
答案 0 :(得分:4)
您需要考虑三种状态,“打开”,“正确”和“不正确”要做到这一点,请从“开放”状态开始。
$new = "<img src='please_enter your card number.jpg' />";
echo $new;
您将在测试的第一个条件中使用它 -
if(isset($var) && ($isitlegit % 5 == 0)) { // it's good
$new = "<img src='correct.jpg' />";
} elseif(isset($var) && ($isitlegit % 5 != 0)) { // it's bad
$new = "<img src='incorrect.jpg' />";
} else { // the default view
$new = "<img src='please_enter your card number.jpg' />";
}
echo $new;
提交后,您只能拥有两种状态中的一种,永远不会返回默认状态。
此外,您已将样式表声明保持为未关闭状态。请把它改成这个 -
<link rel="stylesheet" type="text/css" href="veri-styles.css" />
答案 1 :(得分:0)
我能想到实现这一目标的最好方法是使用AJAX。在页面上创建显示初始消息的div,然后使用AJAX调用将表单数据提交到您将用于验证它的脚本,并在该脚本中回显“成功!您的卡已被已验证“或”无法验证您的卡“消息。然后让你的AJAX函数将div的.innerHTML更改为responseText元素。您可以看到this answer作为一个很好的起点,以及关于使用jQuery库来简化AJAX实现的注释。
编辑:响应另一个用户的downvote,这里有一些代码。
首先,让我们给你的HTML表单调用我们将创建的AJAX对象。因此,请将您的HTML表单代码更改为:
<form onSubmit="return process()">
process()是我们稍后将通过AJAX调用设置的javaScript函数。你已经建立了一个div,你想要显示这些数据,但是我们需要给它一个id,所以改变:
<div class="result-class">
please enter your card number<img src='correct.jpg' />
</div>
到此:
<div class="result-class" id="result">
Please enter your card number.
</div>
并为您的文字输入分配一个ID:
<input name="cardnumber" type="text" class="input-style" placeholder="" id="cardnumber"> </input>
现在我们将创建javaScript函数。 (使用jQuery更容易,但我在普通的javaScript中编写它,所以如果你不熟悉如何使用jQuery,你就不需要依赖。
function process(){
var xmlhttp = new XMLHttpRequest();
var cardnumber = document.getElementById("cardnumber").value;
var result = document.getElementById("result");
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
result.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","validate.php?cardnumber=" + cardnumber,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send();
return false;
}
现在,使用您将用于验证cc#的任何PHP脚本并将其另存为名为validate.php的单独脚本使用$ _GET ['cardnumber']变量来获取从表单发送的cardnumber数据,运行通过您正在使用的任何验证过程。使用if语句为我们的AJAX函数创建responseText元素。你可能让你的脚本将一些变量设置为boolean true或false来检查它。我将在这里使用$验证。
if($validated){
echo 'Your card has been verified!';
} else {
echo 'Unable to validate your card.';
}
AJAX函数会将“result”div中的文本更改为validate.php脚本所回显的文本。
这应该让你走上正轨,除非出现任何语法错误,我只是把它全部写在袖口上。
答案 2 :(得分:0)
if(false===$submitted){
echo "Please type your card details here";
} else {
if($isitlegit % 5 == 0) {
$new = "<img src='correct.jpg' />";
echo $new;
}
else {
$new = "<img src='incorrect.jpg' />";
echo $new;
}
}