@Keppler-23b

Форма отправляет данные, даже если капча не пройдена. Как поправить?

Добрый день. Подскажите, пожалуйста, форма обратной связи все равно отправляет данные, даже если капча не пройдена, как настроить так, чтобы проверка работала корректно и данные формы не отправлялись? У сайта админки нет, всё на html, php и js

и как сделать проверку, а то спам все равно продолжает сыпаться?

<form action="contact.php" id="form" method="post" name="send">
 <!-- col start -->
 <div class="col-sm-4 col-md-4 col-lg-4">
<input class="requiredField name" id="name" name="name" placeholder="Имя" type="text">
</div><!-- col end -->
<!-- col start -->
 <div class="col-sm-4 col-md-4 col-lg-4">
<input class="requiredField email" id="email" name="email" placeholder="Email" type="text">
 </div><!-- col end -->
 <!-- col start -->
 <div class="col-sm-4 col-md-4 col-lg-4">
 <input class="requiredField phone" id="phone" name="phone" placeholder="Телефон" type="text">
 </div><!-- col end -->
 <div class="make-space">
 <textarea class="requiredField message" id="message" name="message" placeholder="Опишите ваш вопрос"></textarea>
 </div>
 <div>
 <button class="c-btn fullwidth-liquid c-btn-contact-modal-wrapper-only" id="submit" type="submit" name="submit_btn"><span>Отправить</span></button>
</div> 
 <div class="g-recaptcha" style="display: flex; justify-content: center; margin-top:10px;" data-sitekey="6LdThLYgdfAAAAAqX9SedfqO3N0r3tZVar87pqCl-"></div>
<div class="text-danger" id="recaptchaError"></div>
 </form>


<?php

$myemail = 'zakaz@trench.ru';

$name    = $_POST['name'];
$email   = $_POST['email'];
$phone   = $_POST['phone'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$subject_с = 'Мы получили Ваш заказ';
$message_с = 'Добрый день!

Ваша заявка принята! Один из наших специалистов ответит вам в ближайшее время. 

Для решения неотложных проблем звоните нам по телефону +7 (351) 220-21-41.

$to            = $myemail;
$email_subject = "Заявка с сайта";
$email_body    = "\n Имя: $name \n Email: $email \n Телефон: $phone \n Комментарий: \n $message";
$headers       = array(
    "From" => 'Trench <' . $myemail . '>',
    "Reply-To" => $myemail,
);
$headers_c = array(
    "From" => 'Trench <' . $myemail . '>',
    "Reply-To" => $myemail,
);
 
mail($to, $email_subject, $email_body, $headers);
mail($email, $subject_с, $message_с, $headers_c);
?>


$("form#form").on("submit", function() {
        $("form#form .error").remove();
        var s = !1;
        if ($(".requiredField").each(function() {
                if ("" === jQuery.trim($(this).val())) $(this).prev("label").text(), $(this).parent().append('<span class="error">Это обязательное поле</span>'), $(this).addClass(
                    "inputError"), s = !0;
                else if ($(this).hasClass("email")) {
                    var r = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,5})?$/;
                    r.test(jQuery.trim($(this).val())) || ($(this).prev("label").text(), $(this).parent().append('<span class="error">Некорректный Email адрес</span>'), $(this).addClass(
                        "inputError"), s = !0);
                }
            }), !s) {
            $("form#form input.submit").fadeOut("normal", function() {
                $(this).parent().append("");
            });
            var r = $(this).serialize();
            $.post($(this).attr("action"), r, function() {
                $("form#form").slideUp("fast", function() {
                    $(this).before('<div class="success">Ваше сообщение отправлено.</div>');
                });
            });
        }
        return !1;
    });
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
Добрый день. Подскажите, пожалуйста, форма обратной связи все равно отправляет данные, даже если капча не пройдена

Понятное дело. Вы ведь ее даже не проверяете в php-обработчике.

и как сделать проверку, а то спам все равно продолжает сыпаться?

Смотря какая капча. В инете инфы полно, вот к примеру первая ссылка с гугла по rcv2
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы