Что если - бот не найдет form
вообще?
3 примера:
1. Вставьте вашу форму, используя AJAX
если вы в порядке с пользователями, у которых отключен JS и вы не можете видеть / отправить форму ... Вы всегда можете уведомить их, используя <noscript><p class="error">ERROR: The form could not be loaded. Please, re-enable JavaScript in your browser to fully enjoy our services.</p></noscript>
. Чем,
- Создайте
form.html
и поместите form
в элемент <div id="formContainer">
.
- Чем внутри страницы, где вам нужно вызвать эту форму, используйте пустой
<div id="dynamicForm"></div>
и этот jQuery:
$("#dynamicForm").load("form.html #formContainer");
2. Создайте свою форму полностью используя JS
// THE FORM
var $form = $("<form/>", {
appendTo : $("#formContainer"),
class : "myForm",
submit : AJAXSubmitForm
});
// EMAIL INPUT
$("<input/>",{
name : "Email", // Needed for serialization
placeholder : "Your Email",
appendTo : $form,
on : { // Yes, the jQuery's on() Method
input : function() {
console.log( this.value );
}
}
});
// MESSAGE TEXTAREA
$("<textarea/>",{
name : "Message", // Needed for serialization
placeholder : "Your message",
appendTo : $form
});
// SUBMIT BUTTON
$("<input/>",{
type : "submit",
value : "Send",
name : "submit",
appendTo : $form
});
function AJAXSubmitForm(event) {
event.preventDefault(); // Prevent Default Form Submission
// do AJAX instead:
var serializedData = $(this).serialize();
alert( serializedData );
$.ajax({
url: '/mail.php',
type: "POST",
data: serializedData,
success: function (data) {
// log the data sent back from PHP
console.log( data );
}
});
}
.myForm input,
.myForm textarea{
font: 14px/1 sans-serif;
box-sizing: border-box;
display:block;
width:100%;
padding: 8px;
margin-bottom:12px;
}
.myForm textarea{
resize: vertical;
min-height: 120px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="formContainer"></div>
3. Бот-приманка вход
боты типа ( действительно как) дерзкий элементы ввода, такие как:
<input
type="text"
name="email"
id="email"
placeholder="Your email"
autocomplete="nope"
tabindex="-1" />
они будут рады ввести какое-то значение, как они делают dsaZusil@kddGDHsj.com
чем (после использования вышеупомянутого HTML), с помощью CSS сделать так:
input[name=email]{ /* bait input */
/*
don't use display:none or visibility:hidden
cause that will not fool the bot
*/
position:absolute;
left:-2000px;
}
теперь, когда ваш ввод невидим для пользователя, ожидайте в PHP, что ваш $_POST["email"]
должен быть пустым (без какого-либо значения)! В противном случае не отправляйте форму.
Теперь все, что вам нужно сделать, это создать другой вход , как <input name="sender" type="text" placeholder="Your email">
после (!) "bot-bait" для фактического Адрес электронной почты пользователя.)
Благодарности:
Developer.Mozilla - Отключение автозаполнения формы
StackOverflow - игнорировать Tabindex