功能和验证值

时间:2019-11-16 21:14:01

标签: php function if-statement include

我正在努力让PHP验证值中的负值,数字和非数字以及空值。

如果值是负数,空,非数字,我需要php显示错误消息。

我还遇到了无法从HTML的{​​{1}}表单获取值的问题。

$_POST

在我的表单中,每个值的名称均正确拼写为我拥有的负值

$first = $_POST['first'];
$second = $_POST['second'];
$operation = $_POST['operation'];

对于空数字,我有

if ($first || $second < 0) {
    print("<h2> Error one or more inputs are not negative numbers</h2>");
     echo("<a href="calculator.html"></a>");
}

,对于非数字值:

if (empty($first) || empty($second) == true) {
    print("<p> One or more input field is empty </p>");
    echo("<a href="calculator.html"></a>");
}

我的问题是,每次输入任何数字,如果输入if (!is_numeric($first) || !is_numeric($second) == false) { print("<h2> Error one or more inputs are not numbers</h2>"); echo("<a href="calculator.html"></a>"); } true都会收到错误消息。

1 个答案:

答案 0 :(得分:0)

首先,更改此条件,因为PHP会将其理解为($first || $second) <0,其中$first || $second将被视为单个布尔语句,然后返回的布尔值将转换为int(true-> 1 ,false-> 0),然后用<0检查,它将始终为false,因此应将代码更改为:

if ($first<0 or $second < 0)
{
   print("<h2> Error one or more inputs are not negative numbers</h2>");
   echo("<a href="calculator.html"></a>");
}

在此块中,== true是无用的,因为php中的if this or that意味着“检查第一个值,并以正确的强制类型转换为布尔值,是对还是错,然后应用{ {1}}(在这两个值之间),在这种情况下,“ this”和“ that”已经是布尔值,因此它完全没有用,但是如果要显式显示,代码应类似于or您只声明了两者之一,或者最好将其删除,因此代码应类似于

empty($first) == true  or empty($second) == true

在最后的代码块中,逻辑是错误的,因为您要检查两个值之一是否不是数字,所以if (empty($first) or empty($second)) { print("<p> One or more input field is empty </p>"); echo("<a href="calculator.html"></a>"); } 将返回true(如果该值不是数字),否则返回false。它是数字,因此代码应更改为

!is_numeric($value)

我也建议您使用if (!is_numeric($first) or !is_numeric($second)) { print("<h2> Error one or more inputs are not numbers</h2>"); echo("<a href="calculator.html"></a>"); } 而不是||。和or而不是&&,因为其他大多数语言都使用该运算符,因此,一旦您学会了,就可以使用所有语言

关于无法从请求中获取数据,请在答案表格中发布,我将使用可能的解决方案编辑此答案