0

我是 PHP 的初学者,我正在构建一个注册表单。现在我也在使用 type="checkbox" 因为我现在想使用人们在一周内访问的表单。

当我处理表单时,如果有人选中其中一个框,一切都会顺利,但当人们不选中其中一个复选框时,我会收到 PHP Implode 错误。

<li><input class="bso" type="checkbox" name="day[]" value="monday"/> monday</li>
<li><input class="bso" type="checkbox" name="day[]" value="tuesday"/> tuesday</li>
<li><input class="bso" type="checkbox" name="day[]" value="wednesday"/> wednesday</li>
<li><input class="bso" type="checkbox" name="day[]" value="thursday"/> thursday</li>
<li><input class="bso" type="checkbox" name="day[]" value="friday"/> friday</li>

所以我需要知道的是,当有人没有选中其中一个框时,我需要什么样的 php 代码才能成功处理我的 PHP 代码而不会收到警告,因为有时已经离开的人不会使用表单想参观。

太好了!

4

2 回答 2

2

您遇到的问题是您需要检查dayPOST 中值的存在,并在尝试对该数组执行操作之前验证该值day确实是一个implode()数组。

$day_string = '';
if(!empty($_POST['day']) && is_array($_POST['day'])) {
    $day_string = implode(',', $day);
} else {
    // you didn't get at least one day checked, so issue error in this code block
}

如果对 GET 和 POST 都运行相同的代码,那么您可能需要检查这是一个 POST(else if甚至在输入此代码块之前),这样您就不会收到针对 GET 请求的错误。

作为实践问题,您应该始终检查是否存在并验证任何用户提供的输入的预期格式/值,然后再在您的代码中使用它。熟悉isset()empty()filter_var()is_array()类似功能。

于 2013-04-09T20:15:11.523 回答
1

如果我对您的理解很好,您希望获得有关访问者何时访问您的网站的某种形式的统计信息。如果像这样滑动隐藏的输入不是更容易吗?:

<input type="hidden" name="day" value="<?php print strtolower(date("l")); ?>">

这样,您将获得所需的内容,而无需用户单击任何内容。在星期一,这看起来像<input type="hidden" name="day" value="monday">等等。

希望有帮助:P

于 2013-04-09T20:18:06.863 回答