Zakonoposlushniy
@Zakonoposlushniy

Не работает форма. Что не так?

Приветствую!

Перестала работать форма обратной связи после попытки сделать защиту от спама.
При попытке отправить сообщение, выскакивает станица с надписью "Spam decected".

Суть в том, что при нажатии на кнопку "отправить" скрипт записывает в пустую переменную секретное значение. От человека переменная приходит с этим значением, а от бота приходит пустая, так-как бот не выполняет js.

Вот код
<form class="s_form" action="contactengine.php" method="post">

<input id="check" name="check" type="hidden" value="" />

<input class="s_text nameinp sinp copy-form" name="Name" placeholder="Имя" type="text">
<input class="s_text nameinp sinp copy-form" name="Email" placeholder="Почта" type="text">
<input class="s_text nameinp sinp copy-form" name="Tel" required placeholder="Телефон" type="text">

<input  class="s_submit copy-form" name="send" value="Отправить заявку" type="submit">
</form>


Вот скрипт
function handler(e) {
  var elem = e.target; //e.target  - нажатый элемент, в нашем случае кнопка
  var parent = elem.parentElement; //родительский элемент - при такой разметке будет родительская форма
  var checkInput = parent.getElementsByClassName("check")[0]; //вытягиваем из divа первый нужный инпут
  checkInput.value = "secretcode"; //ставим нужное значение
}
 
var buttons = document.getElementsByClassName("s_submit copy-form");
for (var i =0;i<buttons.length;i++) {
  buttons[i].onclick = handler;
}


А вот код который в обработчике
if ($_POST['check'] != 'secretcode') exit('Spam decected');


Где я допустил ошибку?
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 1
alex_keysi
@alex_keysi
frontend developer
Хорошая практика проверять сначала input type=check на то, а не пустые ли они.
вот функция в php которую используют чтобы удостоверится что переменная есть.
функция
т е пишешь так
isset($_POST['check'])
// code
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
21 июля 2018, в 18:06
10000 руб./за проект
21 июля 2018, в 15:32
1000 руб./за проект