0

我有一个简单的 foreach 语句,从提交的表单中获取所有字段。然后将这些字段放入通过电子邮件发送的表中。我需要提交和验证 3 个字段,但不会随电子邮件一起发送。这是我生成表格的脚本:

foreach($_POST as $name => $value) {

    if($name !== "num1" || $name !== "num2" || $name !== "captcha") {

        $text .= "<tr><td>$name</td><td>";

        //if form field is array
        if(is_array($value)) {

            foreach($value as $symptom) {
                $text .= $symptom . ", ";
            }

        //else no array
        } else {
            $text .= $value;
        }

        $text .= "</td></tr>";
    } 
}

基本上所有表单字段名称都设置为$name,所有值都设置为$value。我试图包括除名为num1,num2和 &的所有字段captcha

我没有重做这个表单的处理方式,我只需要从表中排除这 3 个字段,但我的条件语句没有达到我的预期。如何确保这三个字段不会包含在电子邮件中?

4

4 回答 4

1

更改if($name !== "num1" || $name !== "num2" || $name !== "captcha")if($name !== "num1" && $name !== "num2" && $name !== "captcha")

于 2013-10-21T21:00:25.763 回答
0

||将您的更改if()&&。您编写的 if() 将始终成功,因为您正在测试的任何值都将始终“不是”同时“不是”这些值中的任何一个。

于 2013-10-21T21:00:37.127 回答
0

PHPcontinue将跳过一个循环的交互,然后您改为使用==比较运算符...试试这个:

if($name == "num1" || $name == "num2" || $name == "captcha")
    continue;
else {
    // rest of your code
}
于 2013-10-21T21:01:41.533 回答
0

你应该使用 && 而不是 || 在 if 语句中。

于 2013-10-21T21:02:36.643 回答