Задать вопрос
@xanzik312

Как бороться с рекламой в письмах при отправке формы?

Стали приходить такие письма на почту с формы на сайте, хотя капча есть:
6358f26a6a6cc688052537.png

Как можно с ними справится?

Есть ли какие-то скрипты-фильтры, чтобы можно было ввести те спам-данные с писем, и ее не пропускало?

<form class="form" action="contact-form.php" method="post">
    <div class="form__legend">Оставьте заявку и мы Вам перезвоним</div>
    <div class="form__row">
    <input class="form__input" type="text"  name="name" placeholder="Укажите ваше имя" required />
        <input class="form__input phone__masks" type="tel" name="tel" placeholder="Введите номер телефона" required />
    </div>
    <div class="form__row">
        <button class="btn__danger2">Оставить заявку</button>
    </div>
</form>

<?php   

	require_once __DIR__ . '/recaptchalib.php';
// Введите свой секретный ключ
$secret = "secretkey";
// пустой ответ каптчи
$response = null;
// Проверка вашего секретного ключа
$reCaptcha = new ReCaptcha($secret);
if ($_POST["g-recaptcha-response"]) {
$response = $reCaptcha->verifyResponse(
        $_SERVER["REMOTE_ADDR"],
        $_POST["g-recaptcha-response"]
    );
}

    $spam = $_POST['spam']; // получим текст из поля спам
    $name = $_POST['name']; // получаем имя из формы
    $email = $_POST['tel']; // получаем email из формы
    // оформление текста, который приходит получателю
    $send = "Имя: ".$name." Телефон: ".$email;
     
    // условие проверки, если поле spam пустое, то форма обрабатывается, 
    //иначе выходим (для роботов)
    if (empty($spam)){ 
    $to = "test@domain.ru";
		
		
    $from = "domain.ru"; // от кого отправлена форма
    $subject = "Запись на консультацию"; // тема сообщения
    // заголовки, отвечающие за кодировку и тип письма, оставляем без изменений
    $headers = "From: $from\r\nReplay-To: $from\r\nContent-type: text/plain; charset=utf-8\r\n";
    // функция php для отправки email mail(кому отправляем, тема, текст в сообщении, заголовки)
    mail($to, $subject, $send, $headers);
    } else exit ;
 
    // В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу
    $redir = $_SERVER['HTTP_REFERER'];
     
    // условия проверки с пересылкой на страницу с формой с добавлением GET-параметра,
    // который нужен, чтобы по нему, можно было выводить благодарственный текст
    if (strpos($redir, "mail=1") === false) $redir .= "?mail=1#contact";
    // функция перенаправления, в данном случае на страницу с формой
    header("Location: $redir");
?>
  • Вопрос задан
  • 101 просмотр
Подписаться 1 Простой 2 комментария
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Голова дана человеку не только для того, чтобы в неё есть.
А код рекаптчи надо не просто добавить в файл, но ещё и как-то использовать

В своем коде вы получаете $response, но никак не используете. Не останавливаете отправку письма при неверном вводе капчи. А просто продолжаете выполнение кода, который отправляет письмо в любом случае.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы