PHP,If/Else语句显示条件,即使我还没有提供输入

PHP,If/Else语句显示条件,即使我还没有提供输入,php,if-statement,Php,If Statement,我有一个表单,我应该输入一个数字,但是当我运行代码时,它已经显示了第一个条件的事件,即使我还没有输入一个数字 <form action="" method="post"> <table> <tr> <td>First number:</td><td><input type="text" name="numberone"></td> <tr> <tr> <td><

我有一个表单,我应该输入一个数字,但是当我运行代码时,它已经显示了第一个条件的事件,即使我还没有输入一个数字

<form action="" method="post">
<table>
<tr>
<td>First number:</td><td><input type="text" name="numberone"></td>
<tr>
<tr>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>

<?php
@$one = $_POST['numberone'];
@$two = $_POST['numbertwo'];


if ($one<"10")
{
echo "Have a good morning!";
}
else if ($one<"20")
{
echo "Have a good day!";
}

?>

第一个号码:

因为
没有任何东西小于10。把你的情况改为

if ($one<10 && $one>0)
{
echo "Have a good morning!";
}
else if ($one<20 && $one>=10)
{
 echo "Have a good day!";
}
应该是

$one = intval($_POST['numberone']);
$two = intval($_POST['numbertwo']);

您正在对照字符串进行检查,请将其作为数字进行检查

 if ($one<10) {
 }

if($one不要使用
@
来抑制错误,您需要检查表单是否已提交

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


以正确的方式执行,不要用
@
符号隐藏错误

检查表单是否已提交:

if(isset($_POST['numberone']) && isset($_POST['numbertwo'])){

    $one = (int)$_POST['numberone'];
    $two = (int)$_POST['numbertwo'];

    if($one < 10){
      echo "Have a good morning!";

    }elseif($one < 20){
      echo "Have a good day!";
    }

}
if(isset($\u POST['numberone'])和&isset($\u POST['numbertwo'])){
$one=(int)$_POST['numberone'];
$two=(int)$_POST['numbertwo'];
如果($1<10){
echo“早上好!”;
}elseif($1<20){
echo“祝你有愉快的一天!”;
}
}

不要抑制
@
中的错误,因为您不会看到通知,在这种情况下,这些通知会帮助您发现问题:)

这是因为加载页面时,这些代码都会立即运行。加载时,$one变量的值为0,因此第一个条件为true。我建议您在单击按钮时使用javascript并使用onClick()脚本,以根据字段值向用户显示响应,或者您需要在if/else语句周围使用

if(isset($_POST['numberone'])){
    $one = $_POST['numberone];
    if ($one < 10){
        etc
    }
}
if(isset($\u POST['numberone'])){
$one=$_POST['numberone];
如果($1<10){
等
}
}
这将检查值是否实际设置为输入字段中的值,以确保不会过早执行

此外,与文字数字的比较不需要引号,
仅$1<10是正确的。

首先检查变量是否使用isset函数设置:

您期望的是什么?如果您没有输入一个数字,
$one
(您为什么要使用
@
来代替您收到的错误,顺便说一句)没有设置。然后检查“nothing”是否小于字符串10…如果不使用默认值(如0),这是唯一正确的答案。如果一个和两个语句不属于对方,它们都应该用If语句包装。非常感谢。你的解决方案很有效。
if(isset($_POST['numberone']) && isset($_POST['numbertwo'])){

    $one = (int)$_POST['numberone'];
    $two = (int)$_POST['numbertwo'];

    if($one < 10){
      echo "Have a good morning!";

    }elseif($one < 20){
      echo "Have a good day!";
    }

}
if(isset($_POST['numberone'])){
    $one = $_POST['numberone];
    if ($one < 10){
        etc
    }
}