1

やあ、みんな。お問い合わせフォームのPHPスクリプトがあります。早くて簡単なので、複数のサイトで使用しています。基本的に、連絡先フォームのすべてのフォームフィールドは、それらが何であるかに関係なくループします。手動でPOSTを1つずつ行う必要がないようにします。

とにかく、私の質問は簡単です。以下はコードの抜粋です。

if ($thisField != "contact-submit") {
    if (($thisField != "human2"))  {
         $msg .= "<b>".$thisField ."</b>: ". $thisValue ."<br>";
    }
    }

さて、このループを実行する際の問題は、送信ボタンやロボットを阻止するための非表示のフォームフィールドなど、送信されたすべてのものを取得することです。これらのフィールドをクライアントに表示したくありません。

したがって、これらの2つのネストされたループを実行する代わりに、

if (($thisField != "human2") or ($thisField != "contact-submit")

しかし、それはうまくいきません...私も試しました|| オペレーターも。

私は何が欠けていますか?

4

2 に答える 2

3

$thisField常にhuman2またはcontact-sumbitではありません(一方の場合は他方ではありません)。あなたは間違いなく意味しました&&

if($thisField != "human2" && $thisField != "contact-submit")
于 2012-03-18T21:47:42.367 に答える
2

その式は常にtrueと評価されました。値を2つの異なる値と比較すると、常に少なくとも1つの値と等しくなりません。、、を使用するつもりだったと思いますので、値がこれら2つの値のいずれでもないかどうかを確認できますand&&

if (($thisField != "human2") && ($thisField != "contact-submit")

また

if (!($thisField === "human2" or $thisField === "contact-submit"))

また

if (($thisField === "human2" or $thisField === "contact-submit") === false)
// Because you might easily overlook the exclamation mark in the second example

またはin_arrayを使用します

if (! in_array($thisField, array('human2', 'contact-submit')))
// Easier add extra fields. You could stick the array in a variable too, for better readability
于 2012-03-18T21:47:04.160 に答える