为啥如果我更改为 INPUT_GET 此代码将始终执行“其他”代码
Posted
技术标签:
【中文标题】为啥如果我更改为 INPUT_GET 此代码将始终执行“其他”代码【英文标题】: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" 【参考方案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,谢谢以上是关于为啥如果我更改为 INPUT_GET 此代码将始终执行“其他”代码的主要内容,如果未能解决你的问题,请参考以下文章
当我运行此代码时,无论字符串是啥,结果始终为 24。为啥? [复制]