【问题标题】:Exclude form fields from POST request从 POST 请求中排除表单字段
【发布时间】:2013-10-22 05:02:36
【问题描述】:

我有一个简单的 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。我正在尝试包含除名为 num1num2captcha 的字段之外的所有字段。

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

【问题讨论】:

  • 您要确保它不是 num1 且不是 num2 且不是验证码,因此将您的 if 更改为: if($name !== "num1" && $name !== "num2" && $name !== "验证码")

标签: php post foreach conditional


【解决方案1】:

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

【讨论】:

  • 哇哦。多么金发的时刻:)——这非常有效。谢谢你发现我的错误。当我有能力时,我会接受答案。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2017-11-15
        • 1970-01-01
        • 2020-02-24
        • 2011-05-19
        • 2018-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多