我尝试了以下内容以确保输入值介于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:stringvsint
目前,您正在比较字符串,而不是数字.将$_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:orvsand
而我们仍然不在那里.目前,您正在使用||(或).您需要使用&&(和)代替:
$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.