Я пытаюсь запретить ботам отправлять сообщения на сайт. Мы запускаем Googles reCaptcha (v2) и Honeypot, но они неэффективны. Я подозреваю, что они используют xRumer.
Тем не менее, пока я не настроил Google reCaptcha Beta 3, я хотел сделать простую проверку, чтобы не разрешить отправку, если текстовое поле электронной почты содержит «@ mail.ru», поскольку большинство отправлений совпадают с этим значением в поле электронной почты.
Достаточно просто, но это не работает. Я просмотрел этот другой пост Переполнение стека, но! == тоже не работает.
Это должно быть что-то простое, но я этого не вижу.
Сначала мы проверяем, отправлена ли форма. Затем посмотрите на последние 8 символов, чтобы убедиться, что они совпадают с "@ mail.ru". Мы также отображаем значение, чтобы подтвердить правильность сравнения, но оно по-прежнему разрешает область «Что-то делать».
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") {
// post so do check
$emailCheck = substr($_POST['email'], -8);
if ($emailCheck !== '@mail.ru'); {
?>
Сделайте что-нибудь - вставьте, только если НЕ соответствует в $ emailCheck
Закрыть Проверить
<?php } } ?>
HTML
<form name = "form1" method = "post" action = "">
<p> </p>
<p><input name = "email" type = "text" id = "email"></p>
<p> </p>
<p>
<input type = "submit" name = "submit" id = "submit" value = "Submit">
</p>
<p>Email Check: <?php echo $emailCheck; ?></p>
</form>
Qirel, вы на 100% правы. Спасибо!






Как отметил @Qirel, в коде была ошибка, заключающаяся в закрывающей точке с запятой
if ($emailCheck !== '@mail.ru'); {
до открытия скобки.
Xrumer по-прежнему препятствует нашим попыткам блокировать спам-сообщения, но, по крайней мере, на этот вопрос дан точный ответ.
if ($emailCheck !== '@mail.ru'); {Эта точка с запятой;является причиной ваших проблем. Удалите это.