从POST请求中排除表单字段

时间:2013-10-21 20:59:09

标签: php post foreach conditional

我有一个简单的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。我想要包含除名为num1num2和&amp;之外的所有字段。 captcha

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

||中的if()更改为&&。你所写的if()总是会成功,因为你所测试的任何值都将同时“不是”任何这些值。

答案 2 :(得分:0)

PHP的continue将跳过循环的迭代,然后您更改为使用==比较运算符...试试这个:

if($name == "num1" || $name == "num2" || $name == "captcha")
    continue;
else {
    // rest of your code
}

答案 3 :(得分:0)

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