【问题标题】:Why if i change to INPUT_GET this code will always execute the ''else'' piece of code为什么如果我更改为 INPUT_GET 此代码将始终执行“其他”代码
【发布时间】:2016-03-20 05:14:08
【问题描述】:
$num = $_POST['num'];

if(filter_input(INPUT_POST,'num', FILTER_VALIDATE_INT, array("options"=>array("min_range"=>5, "max_range"=>20)))===false) { 
    echo "Write a valid number between 5 and 20";    
} else { 
    echo 'Great, your number is: '.$num;
}

【问题讨论】:

  • 如何将数字发送到此脚本?
  • 可能还需要修改 $num = $_GET['num'];
  • 没关系,当我将 INPUT_POST 更改为 INPUT_GET 时,它应该返回条件 FALSE
  • 当然我在 HTML 表单中指定了 method="post"

标签: php servlet-filters


【解决方案1】:

您可以使用许多动词在您的网站和您的应用程序之间发送信息,也许最常用的是 GET 和 POST,GET 请求是您可以在 URL 上看到的请求,通常它们位于 ?符号,另一方面,POST 请求不会显示在 URL 上,但数据是“隐藏”发送的,在这种情况下,您可以看到您正在使用:

$num = $_POST['num']

如果它正在工作是因为在您的 HTML 页面中,或者在同一个 PHP 页面上,您有类似

的内容

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

所以,您可以通过 _POST 而不是 _GET 获取该信息,使用的方法/动词必须在双方都匹配。

如果您尝试获取 _GET 上的值,它将不可用,因此过滤器将无法检查 http://php.net/filter_input,它明确指出:

如果未设置 variable_name 变量,则为 NULL

您正在执行 === 比较,在这种情况下不会返回 false,而是返回 NULL,因此要执行的唯一可用代码是 else 部分!

【讨论】:

  • 我的意思是,当我将 INPUT_POST 更改为 INPUT_GET 时,它会将“if”条件设为 TRUE,并且会退出代码的“else”部分
  • 刚刚完成我的回答,试图更好地解释它
  • 我想我现在明白了,它返回 NULL 而不是 false,谢谢
猜你喜欢
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
相关资源
最近更新 更多