3

所以我们得到了这个学校任务,我们需要检查其中一个字段是否未填写并显示错误。我们这样做了,但是由于某些奇怪的原因,当未选中单选按钮时它不会显示错误(文本字段空检查工作正常)。

我和朋友尝试了很多可能性,但它们似乎都不起作用。我们在这个任务上被困了两个小时。现在我们尝试制作单独if的 's,但这似乎也不起作用。

这些是重要的部分:

<p>
<input type="hidden" name="taal" value="false">
    Choose a language
<input type="radio" name="taal" value="N"> Dutch
<input type="radio" name="taal" value="E"> English
<input type="radio" name="taal" value="S"> Spanish

if (@$_POST['taal'] == null){
echo "No Language gotten";
return;
}
4

4 回答 4

9

您可以省略隐藏标签:

Choose a language
<input type="radio" name="taal" value="N"> Dutch
<input type="radio" name="taal" value="E"> English
<input type="radio" name="taal" value="S"> Spanish

并用于isset()检查值是否已发送。如果没有选中任何单选按钮,taal则根本不会添加到发布的数据中。所以你必须检查它是否被设置,你可以这样做isset()

if (!isset($_POST['taal'])){
    echo "No Language gotten";
    return;
}

此外,在大多数情况下,建议不要使用@operator。错误消息(警告、通知等)用于警告您代码中的问题。解决问题而不是隐藏它,否则它可能会在以后回来咬你。

于 2012-10-06T09:32:56.687 回答
3
if (!isset($_POST['taal']))  {
于 2012-10-06T09:33:09.310 回答
2

那是因为它永远不会是空的。你给了它一个默认值,"false". 检查:

if ($_POST['taal'] == "false") {
   //No language given
}
于 2012-10-06T09:33:09.133 回答
1

隐藏元素中的值 'false' 是一个字符串,所以你应该比较$_POST['taal'] == 'false'它才能工作。

最好将此 false 元素设置为空字符串,然后将其与''. 另外,我不建议使用@来抑制警告,所以试试这个:

if (!isset($_POST['taal']) || !$_POST['taal']) { ...
于 2012-10-06T09:34:09.223 回答