无法在 phpmailer 中发送空复选框值

Cant send empty checkbox value in phpmailer

我正在使用 phpmailer 处理电子邮件表单,每次复选框保持空白时都会出现问题,所以我发现问题出在下面的表达式中:

$f_select = '';
foreach ($_POST['select'] as $key => $value) {
    $f_select .= $value."\r\n";
}

返回以下错误:

Warning: Invalid argument supplied for foreach() in /home/alive-web-tech/www/nagoyashobotenken/contact/complete.php on line 23

我该如何解决这个问题?我想我需要创建一个条件,告诉当复选框值为空时必须发生一些事情来防止错误。

有两种方法可以解决这个问题。

  1. 如果您确实需要复选框的值,即使它们没有被选中,那么您必须更新您的表单,为您拥有的每个复选框包含一个值为 0 的隐藏输入:

    <input type="hidden" name="select[firstCheckbox]" value="0" />
    <input type="checkbox" name="select[firstCheckbox]" />
    
  2. 如果您不关心复选框的空值,那么您可以在进入循环之前简单地验证发布的数据是否为空:

    $f_select = '';
    if (!empty($_POST['select'])) {
        foreach ($_POST['select'] as $key => $value) {
            $f_select .= $value."\r\n";
        }
    }
    

在调用 foreach() 之前,您需要检查 $_POST['select'] 是否为空。

您可以尝试类似的方法:

$f_select = '';
 if (!empty($_POST['select'])) {
   foreach ($_POST['select'] as $key => $value) {
     $f_select .= $value."\r\n";
   }
}

在循环浏览其内容之前,您必须检查 $_POST['select]

$f_select = '';

if (!empty($_POST['select'])) {
    foreach ($_POST['select'] as $key => $value) {
        $f_select .= $value."\r\n";
    }
}