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ます。num1num2、 &という名前のフィールドを除くすべてのフィールドを含めようとしていますcaptcha

このフォームの処理方法をやり直しているわけではありません。テーブルからこれら 3 つのフィールドを除外する必要があるだけですが、条件文が期待どおりに機能していません。これら 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 に答える