我尝试了以下内容以确保输入值介于0
和之间100
但它不起作用.
if (($_POST['rate']) >= '0' || =<'100') {
$rate = $_POST['rate']
}
esle {
echo '<p>Please enter a value between 0 and 100</p>';
}
Run Code Online (Sandbox Code Playgroud)
问题1:string
vsint
目前,您正在比较字符串,而不是数字.将$_POST
变量转换为int
并删除周围的撇号0
并100
修复此问题:
$rate = (int) $_POST['rate'];
if ($rate >= 0 || =< 100) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
问题2:缺少某些东西
但是,由于缺少$rate
第二次比较,这仍然不会产生预期的结果.将其更改为:
$rate = (int) $_POST['rate'];
if ($rate >= 0 || $rate =< 100) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
问题3:or
vsand
而我们仍然不在那里.目前,您正在使用||
(或).您需要使用&&
(和)代替:
$rate = (int) $_POST['rate'];
if ($rate >= 0 && $rate =< 100) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
问题4:=<
vs<=
还是不行.你的一个比较运算符是错误的方式.=<
应该是<=
:
$rate = (int) $_POST['rate'];
if ($rate >= 0 && $rate <= 100) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
问题5:用户输入
$_POST
保存来自用户的数据.绝不信任用户数据.例如,如果没有rate
元素,那该怎么办?在这种情况下,PHP将抛出一个类型的错误E_NOTICE
(如果你没有设置报告,你甚至可能看不到E_ALL
)并且一旦转换为int
,评估为0
!因此,您的测试将通过,这可能不是您想要的.为防止这种情况,请使用isset()
:
$rate = isset($_POST['rate']) ? (int) $_POST['rate'] : -1;
if ($rate >= 0 && $rate <= 100) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
问题6:东西esle
正如Pedro Lobito指出的那样,你设法引入了一个错字:esle
应该是else
.
问题7:分号
正如格特所指出的那样,你的线路最后$rate = $_POST['rate']
都没有了;
.
摘要
我并不是故意粗鲁,但是看到你设法挤进这么简单的错误if
,我觉得你应该在这一点上参考一些基本的PHP教程而不是Stack Overflow.
归档时间: |
|
查看次数: |
450 次 |
最近记录: |