Как исправить форму так, чтобы данные не отправлялись, пока капча не будет успешно пройдена?

Как можно настроить проверку капчи так, чтобы форма обратной связи не отправляла данные в случае неудачной верификации? Как эффективно предотвратить спам, используя только HTML, PHP и JS на сайте, где нет админки?
  • 11 апреля 2024 г. 5:09
Ответы на вопрос 2
Для того чтобы предотвратить отправку данных формы, пока капча не будет успешно пройдена, можно использовать JavaScript для проверки состояния капчи перед отправкой формы.

Пример кода на JavaScript:

```javascript
document.getElementById("myForm").addEventListener("submit", function(event){
  var captchaValue = document.getElementById("captchaInput").value; // Получаем значение капчи из поля ввода
  if(captchaValue != "правильное значение капчи"){ 
    event.preventDefault(); // Отменяем отправку формы
    alert("Пожалуйста, пройдите капчу!"); // Выводим сообщение об ошибке
  }
});
```

Для настройки проверки капчи на стороне сервера (PHP) можно использовать следующий код:

```php
$captcha = $_POST['captchaInput']; // Получаем значение капчи из формы
if($captcha != "правильное значение капчи") {
  // Выводим сообщение об ошибке или делаем какие-то другие действия
  echo "Пожалуйста, пройдите капчу!";
  die(); // Останавливаем выполнение скрипта
}
```

Чтобы эффективно предотвратить спам, можно также использовать дополнительные методы защиты, например, добавить скрытое поле в форму (honeypot) или использовать технологии, основанные на машинном обучении, такие как reCAPTCHA от Google.

Например, реализация reCAPTCHA на HTML:

```html
<div class="g-recaptcha" data-sitekey="ваш_ключ_рекапчи"></div>
```

После этого на стороне сервера нужно будет добавить проверку reCAPTCHA, чтобы убедиться, что форма была отправлена человеком, а не ботом.
Добрый день. Подскажите, пожалуйста, форма обратной связи все равно отправляет данные, даже если капча не пройдена

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

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

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