запутался в использовании операторов PHP - PullRequest
1 голос
/ 19 марта 2012

Привет всем.У меня есть контактная форма PHP скрипт.Я использую его для нескольких сайтов, так как это быстро и легко.По сути, он проходит через ВСЕ поля формы в контактной форме, независимо от того, что они есть.Делает так, что мне не нужно вручную делать POST-вещь один за другим.

В любом случае, мой вопрос прост.Ниже приведен фрагмент кода:

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

Теперь проблема с этим циклом состоит в том, что он собирает ВСЕ отправленные вещи, включая КНОПКУ ОТПРАВИТЬ и мое скрытое поле формы, чтобы удерживать роботов.Я не хочу показывать эти поля своим клиентам.

Так что вместо того, чтобы делать эти два вложенных цикла, я подумал сделать

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

, но он просто не работает... Я также попробовал ||оператор также.

Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

$thisField всегда будет не человеком2 ИЛИ не контакт-сумбит (если это одно, то это не другое).Вы определенно имели в виду &&:

if($thisField != "human2" && $thisField != "contact-submit")
2 голосов
/ 19 марта 2012

Это выражение всегда оценивается как истинное.Если вы сравниваете значение с двумя разными значениями, оно всегда равно хотя бы одному из них.Я думаю, что вы хотели использовать 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
...