为什么如果我改为INPUT_GET,这段代码将始终执行''else''代码

时间:2015-12-14 16:22:57

标签: php servlet-filters

$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;
}

1 个答案:

答案 0 :(得分:0)

您可以使用许多动词在您的网站和您的应用之间发送信息,也许最常用的是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部分!