Добрый вечер!
У нас проблема: два сайта нашей компании попали в какие-то списки спамеров и ежедневно приходит более 40 заявок на почту с именем типа "58ebb537ee4e7" и почтой типа "g105a@yahoo.com".
Решили защититься с помощью ограничения для строки "Имя" - только кириллица ( с помощью pattern).
При ручной проверке формы всё отлично работает (с латиницей форму не отправляет). Однако спам заявки с именами типа "58ebb537ee4e7" продолжают приходить. В чём может быть проблема?
P.s. также не работает "required" в поле с телефоном. Заявки приходят без номера телефона.
Код формы с одного из сайтов:
<form class="form-horizontal" method="post" action="order.php">
<fieldset>
<p class="contact-message">
<center><b><span style="font-size:30px; font-weight: 100;">ОСТАВЬТЕ ЗАЯВКУ</span><br><span style="font-size:20px; font-weight: 100;">наш менеджер Вам перезвонит!</span></b></center><br>
</p>
<div class="control-group">
<label class="control-label" for="name">Введите имя</label>
<div class="controls"><input type="text" value="" name="name" required placeholder="Введите имя" pattern="^[А-Яа-яЁё\s]+$"></div>
</div>
<div class="control-group">
<label class="control-label" for="phone">Введите телефон</label>
<div class="controls"><input type="text" value="" name="phone" required placeholder="Введите телефон" pattern="^[ 0-9]+$"></div>
</div>
<div class="control-group">
<label class="control-label" for="email">Введите e-mail</label>
<div class="controls"><input type="text" value="" name="email" placeholder="Введите e-mail"></div>
</div>
<input type="hidden" id="" name="formochka" value="Форма_1">
</fieldset>
<div class="control-group center"><button class="btn">Отправить »</button></div>
</form>
Подскажите, как сделать ограничение в order.php? Сделать только проверку имени, чтобы там была хотя бы одна буква и только кириллица.
<?php
header("Content-Type: text/html; charset=utf-8");
if($_SERVER["REQUEST_METHOD"] == "GET")
exit;
$email = "xxxxxxxxx@mail.ru";
$title = "Новый заказ. XXXXXX";
$from = 'XXXXXXXXX';
$text = 'Информация о заказе:
Товар: XXXXXXXXX (http://XXXXXXX.ru/)
Имя: '.@$_POST['name'].'
Телефон: '.@$_POST['phone'].'
Почта: '.@$_POST['email'].'
Время заказа: '.date("Y-m-d H:i:s").'
Форма: '.@$_POST['formochka'].'';
if(mail($email, $title, $text, "Content-type:text/plain; charset = utf-8\r\nFrom:$from"))
echo "<html><head><title>Спасибо за заказ!</title></head><body><div style='margin: 150px auto; width: 300px;'></div></body></html>
<meta http-equiv='refresh' content='0; url=./success.html' />";
else
echo "<h2>Ошибка! Попробуйте ещё раз!</h2>";
?>
также не работает "required" в поле с телефоном. Заявки приходят без номера телефона.
Вот эту проблему и решите в первую очередь.
if (!isset($_POST['phone'])) { //TODO и еще проверка на пустую строку
...
exit();
}
Если в будущем они это обойдут, то и с кириллицей захотят - обойдут, все кто делают боты уже готовы хоть каждый день изменения в бота вносить, лишь бы это рентабельно было.
А шаблоны проектирования здесь ни при чем. :)
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники