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

    @Keppler-23b Автор вопроса
    Danny Arty, так, проверяю капчу до отправки, все работает
    но спам все равно пришел после этого
    не подскажете, где еще ошибки в коде?
    Написано
  • Форма отправляет данные, даже если капча не пройдена. Как поправить?

    @Keppler-23b Автор вопроса
    вы простите за дилетантские вопросы) я далек от темы, но пытаюсь разобраться

    вот, что я сделал:

    тут добавил код js из вашего примера

    $("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>');
                    });
                });
            }
            if (!grecaptcha.getResponse()) {
             alert('Вы не заполнили капчу');
             return false; // возвращаем false и предотвращаем отправку формы
        }
            return !1;
        });


    тут добавил php проверку:

    <?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);
    
    $response = $_POST["g-recaptcha-response"];
      $url = 'https://www.google.com/recaptcha/api/siteverify';
      $data = [
        'secret' => '6LdAsKipAAAAALO0CxcvesSvpaashG_gOZI1_4-q',
        'response' => $_POST["g-recaptcha-response"]
      ];
      $options = [
        'http' => [
          'method' => 'POST',
          'content' => http_build_query($data)
        ]
      ];
      $context  = stream_context_create($options);
      $verify = file_get_contents($url, false, $context);
      $captcha_success=json_decode($verify);
      if ($captcha_success->success==false) {
        echo "Ваше поведение очень похоже на поведение робота";
      } else if ($captcha_success->success==true) {
                // сохраняем данные, отправляем письма, делаем другую работу. Пользователь не робот
      }
    
    
    ?>
    Написано
  • Форма отправляет данные, даже если капча не пройдена. Как поправить?

    @Keppler-23b Автор вопроса
    Спасибо за подсказки.
    А что делать, если после того как вылезло оповещение о незаполненной капчи, нажимая на кнопку "ОК", форма все равно отправляется?
    Написано
  • Почему не работает скрипт JS?

    @Keppler-23b Автор вопроса
    перенес в body, не помогло, к сожалению