为什么在输入值之前会出现GET错误?

时间:2019-07-08 03:23:08

标签: php

这是我的第一个问题,我是PHP的新手,所以不要对我苛刻:D

我不明白,为什么我的代码在没有我的情况下也向我显示错误,甚至没有触摸表格。仅在通过表单提交一些值之后,如何才能使此代码打印错误?

<?php 
$error = "";
if (isset($_GET['a'])) {
    $a = htmlentities($_GET['a']);
}
if (isset($_GET['b'])) {
    $b = htmlentities($_GET['b']);
}

if (empty($a)) {
    $error = "<b>Error:</b> You didn't enter 'a' or 'a' isn't a number<br>";
}
if (empty($b)) {
    $error .= "<b>Error:</b> You didn't enter 'b' or 'b' isn't a number<br>"; 
}
if ($a > $b) {
    $error = "<b>Error:</b>Number 'a' can't be bigger than 'b'<br>";
    } else {
    $sum = (int)$a + (int)$b;
}
?>
<!DOCTYPE html>
    <head>
        <meta charset="utf-8">
        <title>Count sum of two number</title>
    </head>
    <body>
        <h1>Count sum</h1>
        <br>
    <form action="4.php" method="GET">
    Enter a: <input type="text" name="a"><br><br>
    Enter b: <input type="text" name="b"><br>
    <input type="submit" value="Count">
</form>
<br>
<b>Results:</b> 
<?php 
if (empty($error)) {
    echo $sum;} 
else {
    echo $error;
}
?>
    </body>
</html>

我希望echo $ error仅在我提交表单中的值之后才会出现,但是现在我从头开始打印它。

1 个答案:

答案 0 :(得分:0)

在比较之前,需要检查变量$a$b是否已设置。在第一次加载时,$_GET将为空,并且变量$a$b将不存在。

所以您需要在条件检查之前检查变量是否存在

if (isset($a) && isset($b) && ($a > $b)) {
    $error = "<b>Error:</b>Number 'a' can't be bigger than 'b'<br>";
    } else {
    $sum = (int)$a + (int)$b;
}

PS :您可以根据代码要求重新排列isset($a) && isset($b)条件。这个例子只是为了展示如何使用它。