php / mysql:信用卡验证不起作用

时间:2017-01-05 13:10:24

标签: php html

我试图制作一个带有信用卡号码的程序并检查它是否有效并让用户知道它,但在我的程序中,我点击提交时根本没有收到回音消息

<?php
session_start();
if (isset($_POST['submit'])){
    $number=$_POST['cc'];
    $total=0;
    $i=1;
    $last4= substr($number,-4,4);
    $number=$str_split($number);
    $number=array_reverse($number);
    foreach($number as $digit){
        if(i%2==0){
            $digit*=2;
            if($digit>9){
                $digit -=9;
            }
        }
        $total += $digit;
        $i++;
    }
    if($total%10==0){
        echo "Your credit card number ending in ".$last4." is valid";
    }
    else
    {
        echo "Your credit card number ending in ".$last4." is invalid";
    }
}
?>
<html>
<head>
    <title>Credit Card Number</title>
</head>
<body>
<form action="cards.php">
    <input type="text" name="cc">
    <input type="submit" name="submit">
    </form>
</body>
</html>

1 个答案:

答案 0 :(得分:2)

让我们一步一步地完成这一步。

首先,以下条件永远不会得到满足/满足,因为您对一个没有(特别)包含&#34; post&#34;的表单使用POST数组。其中的方法<form action="cards.php">

if (isset($_POST['submit'])){
// ...
}

由于表格默认为&#34; GET&#34; &#34; POST&#34;没有暗示,需要包括在内。

<form action="cards.php" method="post">

接下来,我们遇到以下错误(从评论中提取并说明):

  

&#34;注意:未定义的变量:str_split&#34;

str_split()应该已声明为function,而不是variable

$number=$str_split($number);
        ^ $ is a variable character

需要将其删除:

$number= str_split($number);

然后我们出现以下错误(也从评论中删除并说明):

  

使用未定义的常数i - 假设&#39; i&#39;&#34;

这是由于&#34; i&#34;缺少$造成的。在if(i%2==0)中,首先在$i=1;中声明。

它查找了该名称的constant,由于找不到该名称,因此它向您提出了该错误。

因此,它应该读作:

if($i%2==0)