Есть несколько форм на сайте из за спама решил добавить скрытое поле в формы. Но возникла проблема, одна форма работает, вторая нет, не могу понять в чем причина. Код первой формы, которая работает: HTML: <form action="call.php" method="post"> <input id="check" name="check" type="hidden" value="" /> <input class="text-kredit" type="text" name="name" required placeholder="Имя"> <input class="text-kredit" type="text" name="phone1" required placeholder="Номер телефона"> <input style="display:none" type="text" name="tovar" value="<?php echo $title; ?>"> <input class="text-kredit" type="textarea" name="komment" placeholder="Комментарий к заявке (необязательно)"> <p class="pravila"><input type="checkbox" required name="pravila"> Я согласен с <a href="privacy">политикой конфиденциальности</a></p> <input class="btn-kredit" name="submit" type="submit" onclick="document.getElementById('check').value = 'stopSpam';" value="Отправить"> </form> И ее обработчик: PHP: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Спасибо за заявку!</title></head><body><?phpif ($_POST['check'] != 'stopSpam') exit('Spam decected');$recepient = "[email protected]";$sitename = "atv-moto.org";$name = trim($_POST["name"]);$familiya = trim($_POST["familiya"]);$otchestvo = trim($_POST["otchestvo"]);$gorod = trim($_POST["gorod"]);$tovar = trim($_POST["tovar"]);$stoimost = trim($_POST["stoimost"]);$komment = trim($_POST["komment"]);$phone1 = trim($_POST["phone1"]);$message = "Имя: $name\nКонтактный телефон: $phone1\nСтраница: $tovar\nКомментарий клиента: $komment";$pagetitle = "Заказ звонка: $name $phone1. Страница: $tovar";mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");?><h1>Спасибо, Ваша заявка принята.</h1>Мы скоро обязательно свяжемся с Вами!<br/><a href="/">Вернуться на сайт</a></body></html> Вот вторая форма, которая не работает: HTML: <form action="postavshikam.php" method="post"> <input id="check" name="check" type="hidden" value="" /> <input class="text-kredit" type="text" name="company" required placeholder="Название компании"> <input class="text-kredit" type="text" name="gorod" required placeholder="Город"> <input class="text-kredit" type="text" name="name" required placeholder="Контактное лицо"> <input class="text-kredit" type="text" name="phone1" required placeholder="Номер телефона"> <input class="text-kredit" type="email" name="email" required placeholder="Email"> <input class="text-kredit" type="text" name="site" placeholder="Адрес сайта"> <textarea class="text-kredit comment" type="text" required name="komment" placeholder="Коротко опишите коммерческое предложение"></textarea> <p class="pravila"><input type="checkbox" required name="pravila"> Я согласен с <a href="privacy">политикой конфиденциальности</a></p> <input class="btn-kredit" name="submit" type="submit" onclick="document.getElementById('check').value = 'stopSpam';" value="Отправить"> </form> Вот ее обработчик: PHP: <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Спасибо за заявку!</title></head><body><?phpif ($_POST['check'] != 'stopSpam') exit('Spam decected');$recepient = "[email protected]";$sitename = "atv-moto.org";$name = trim($_POST["name"]);$site = trim($_POST["site"]);$company = trim($_POST["company"]);$gorod = trim($_POST["gorod"]);$email = trim($_POST["email"]);$komment = trim($_POST["komment"]);$phone1 = trim($_POST["phone1"]);$message = "Имя: $name\nТелефон: $phone1\nАдрес сайта: $site\nНазвание компании: $company\nГород: $gorod\nЭлектронная почта: $email\nКоммерческое предлоение: $komment";$pagetitle = "Заявка на сотрудничество: $company $name $phone1";mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");?><h1>Спасибо, Ваша заявка принята.</h1>Мы скоро обязательно свяжемся с Вами!<br/><a href="/">Вернуться на сайт</a></body></html> При заполнении нерабочей формы выходит сообщение Spam decected
Если формы на одной страницы, у скрытых полей должны быть разные id, иначе используется всегда только одно из полей.
Оно и не удивительно: ключ то постоянный, достаточно его один раз увидеть и дальше можно через эту форму слать спам сколько угодно. Вариант с динамическим ключём тоже не идеален: если бот использует браузер, то сможет работать с формой как реальный пользователь. В общем, единственная реальная защита - это капча (а дальше зависит от качества капчи и продвинутости ботов).