Обязательная строка

AGENT131313

Забанен
Регистрация
17 Мар 2009
Сообщения
292
Реакции
31
Необходимо добавить обезательное поле в форму, тоесть чтобы просто проверяло ответ в ней.
Капчу немогу поставить т.к. не двиг а обічная html страница.
Суть вопроса, почему неработает? чего не хватает?
<script type="text/javascript">
function validateForm()
{
var x=document.forms["myForm"]["fname"].value;
if (x==null || x=="16")
{
alert("Необходимо ответить на вопрос!");
return false;
}
}
</script>
<form action="sendmes.php" name="myForm" method="post" id="form" onsubmit="return validateForm()">
<input type="text" name="send_name" class="sendname">
<input type="text" name="send_email" class="sendname">
9+7=? <input type="text" name="fname" class="sendname">
<textarea onkeyup="textCounter(this,'text-counter',350)" class="sendmes" name="send_mes"></textarea>
<input type="SUBMIT" VALUE="Отправить заказ" class="sendbut" VALUE="SUBMIT"></form>
 
Да работает, но и боты дальше пишут..

Как по другому от них защитица?
 
Вопрос сложней сделай, может поможет. Сложение для них не проблема видимо. Что-нибудь из такого бреда: "Сколько лап у кошки", "С какой планеты ты пишешь" :)
 
Да работает, но и боты дальше пишут..

Как по другому от них защитица?
Боты отправляют POST запросы, им на ваши скрипты ...
Проверку правильности ввода полей нужно еще и делать на стороне обработки формы после отправки, а не только на стороне клиента.
 
Неплохой способ озвучивали, чтобы избежать капчу.
Делаем два скрытых поля в форме, называем их, например captcha и key. В одном передаем параметр, который можем вычислить на сервере. А во второй - ничего.

На сервере проверяем переданный параметр captcha и наличие key, и чтобы оно было пустое.

Фишка в чем - боты чаще автоматические находят куда слать запрос. Видя поля captcha и key - они будут пытаться забить в них данные. Если это человек, то в key он ничего не запишет, даже не будет знать о существовании. А вот боты в 90% случаев будут заполнять это поле, либо вообще не передавать пустое значение.

Знаю, что так устроен один из плагинов в WordPress, ставил себе - боты стали заметно реже заваливать спамом.

Если не понятна суть - могу накидать небольшой пример кода.

И правильно описали выше - боты вообще игнорирует js. Он идет больше для удобства настоящего пользователя.
 
Неплохой способ озвучивали, чтобы избежать капчу.
Делаем два скрытых поля в форме, называем их, например captcha и key. В одном передаем параметр, который можем вычислить на сервере. А во второй - ничего.

На сервере проверяем переданный параметр captcha и наличие key, и чтобы оно было пустое.

Фишка в чем - боты чаще автоматические находят куда слать запрос. Видя поля captcha и key - они будут пытаться забить в них данные. Если это человек, то в key он ничего не запишет, даже не будет знать о существовании. А вот боты в 90% случаев будут заполнять это поле, либо вообще не передавать пустое значение.

Знаю, что так устроен один из плагинов в WordPress, ставил себе - боты стали заметно реже заваливать спамом.

Если не понятна суть - могу накидать небольшой пример кода.

И правильно описали выше - боты вообще игнорирует js. Он идет больше для удобства настоящего пользователя.
Выложи примерный код, пример пожалуйста
 
В файле "sendmes.php", добавь



if (isset($_POST["fname"]) && ($_POST["fname"] == "твой ответ"))
{
//тут твой код
...
}

else
{
exit("Incorrect answer");
}
По простому как-то так, это конечно не то что предложил Delfi, но уже будет проверятся переменная.
 
Выложи примерный код, пример пожалуйста

Выше пример схож.

PHP:
if ((isset($_POST["key"]) && $_POST["key"] == "") && (isset($_GET["captcha"]) && $_GET["captcha"] == check_code())) {
// Отправляем почту или что-то еще.
}

При ошибке лучше ничего не выводить, т.к. скорее всего бот может парсить ответ и увидев ошибку - будет искать другой подход

Как вариант - сделать только ajax отправку. Процент пользователей с выключенным js очень мал. А на сервере можно проверять - идет ajax запрос или нет. Если нет, то тоже ничего не проводить.

check_code() - это функция, которая генерирует данные для проверки.
Можно, скажем, взять ip адрес пользователя и id его сессии, а затем взять от этого md5 хэш. Т.е. при выводе формы этот хэш записывать в captcha и проверять это значение на сервере. Получается недокапча, но в таком случае мы не напрягаем пользователя с ее вводом.
 
Назад
Сверху