антиспам секретный вопрос php контактная форма - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть рабочее поле контакта. Хотя я использую стандартные средства защиты от спама, такие как honeypot и т. Д., Я получаю спам почти каждый день. Так что я подумал, что могу задать нам секретный вопрос. Итак, я добавлю это:

Spam-question: Which colour has the sky? (lowercase) <input name="spamprotection">

Теперь я хочу отправить форму, только если на этот вопрос ответили правильно, в противном случае должно появиться сообщение об ошибке. Но его больше не отправляют, а все еще показывают сообщение об успехе Что я делаю не так?

Я добавил это в последовательность отправки и до того, как она заработала правильно: !empty($_POST['spamprotection']) || ($_POST["spamprotection"] = 'blau') ||

// Send the email. 

if (!empty($_POST['spamprotection']) || ($_POST["spamprotection"] = 'blau') ||  mail($to, $subject, $message, $header)) {

    $result = ["color" => "green", "msg" => "Ich habe Ihre Mail erhalten und melde mich in Kürze!"];

    if ($file_type) {

      $result['msg'] .= "";

    }

} else {

    $result = ["color" => "red", "msg" => "Nachricht konnte nicht gesendet werden. Bitte senden Sie mir Ihre Anfrage an bm-translations@email.de"];

}

1 Ответ

0 голосов
/ 10 ноября 2018

Ваша логика в вашем утверждении if недействительна.

Вам нужно изменить свой код на это.

if (isset($_POST['spamprotection']) && $_POST["spamprotection"] == 'blau') {

    $result = ["color" => "green", "msg" => "Ich habe Ihre Mail erhalten und melde mich in Kürze!"];
    mail($to, $subject, $message, $header);

    if ($file_type) {

      $result['msg'] .= "";

    }

} else {

    $result = ["color" => "red", "msg" => "Nachricht konnte nicht gesendet werden. Bitte senden Sie mir Ihre Anfrage an bm-translations@email.de"];

}

Когда речь идет о равенстве:

$a = '5'; //This sets $a = 5(string);
$b = 5; //This sets $b = 5(int);
$a == $b;  //This checks to see if $a is equal to $b. Will return true.
$a === $b; //This is a strict comparison of $a & $b.  It checks to see if $a is equal to $b as well as the type.  Meaning $a(string) is equal to $b(int). Will return false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...