Ajax 网络表单-机器人通过所有检查时,人类不能。?
我有下面的代码,相当标准-但似乎机器人甚至没有在输入字段中输入任何内容就可以通过了!作为一个普通人,在提交时检查,所以我总是收到空邮件 这是我的代码,如果有人有任何想法: javascript:Ajax 网络表单-机器人通过所有检查时,人类不能。?,ajax,phpmailer,Ajax,Phpmailer,我有下面的代码,相当标准-但似乎机器人甚至没有在输入字段中输入任何内容就可以通过了!作为一个普通人,在提交时检查,所以我总是收到空邮件 这是我的代码,如果有人有任何想法: javascript: $('form.ajax').on('submit', function () { if($(".field-b").val()) { return false; } var that = $(this), url = that.attr('actio
$('form.ajax').on('submit', function () {
if($(".field-b").val()) {
return false;
}
var that = $(this),
url = that.attr('action'),
type = that.attr('method'),
data = {};
that.find('[name]').each(function(index, value) {
var that = $(this),
name = that.attr('name'),
value = that.val();
data[name] = value;
});
for(var property in data) {
if(data.hasOwnProperty(property)) {
if(data[property] == "") {
$('[name="' + property + '"]').parent().addClass("error");
return false;
}
}
}
$.ajax({
url: url,
type: type,
data: data,
success: function(response) {
$(".info,.ajax").hide();
$(".success-send").fadeIn(300);
return false;
}
});
return false;
});
HTML:
<form class="ajax" action="../email.php" method="post"autocomplete="off">
<div class="form-field">
<input name="form_name" type="text" class="form-field-name">
<label>Your Name</label>
<div class="field-icon-name"></div>
</div>
<div class="form-field">
<input name="form_business" type="text" class="form-field-business">
<label>Business</label>
<div class="field-icon-business"></div>
</div>
<div class="form-field">
<input name="form_email" type="email" class="form-field-email">
<label>Email Address</label>
<div class="field-icon-email"></div>
</div>
<div class="form-field">
<input name="form_phone" type="text" class="form-field-phone">
<label>Phone #</label>
<div class="field-icon-phone"></div>
</div>
<div class="form-field special">
<input name="form_b" type="text" class="form-field-b">
<label>question</label>
</div>
<div class="form-field">
<textarea name="form_message"></textarea>
<label>Message</label>
<div class="field-icon-message"></div>
</div>
<button type="submit">Send Message</button>
</form>
你的名字
生意
电子邮件地址
电话#
问题
消息
发送消息
最后是PHP
<?php
session_start();
$to = "myemail@domain.com";
$name = $_POST['form_name'];
$phone = $_POST['form_phone'];
$email = $_POST['form_email'];
$business = $_POST['form_business'];
$email = $_POST['form_email'];
$subject = 'Contact Form mattscorner';
$message = 'Name:'.$name.'\n Email + phone:'.$email.", ".$phone."\n Business: ".$business."\n\n".$message;
$headers = "From: $email\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\n";
mail($to, $subject, $message, $headers);
if (mail($to, $subject, $message, $headers)) echo "mail sent"; else echo "mail NOT sent";
?>
我认为这是相当标准的代码,但我似乎无法让机器人甚至被现场要求阻止
我收到的电子邮件都是:
姓名:\n电子邮件+电话:,业务:
这里有一个基本的误解。机器人程序不运行JavaScript,所以这一切都无关紧要,而且您也没有在服务器端执行相同的验证,因此它们不会遇到任何问题。也可以用PHP实现验证 此外,无论如何,您确实需要对安全性进行更多验证—您的脚本对各种漏洞都是开放的,并且您正在生成格式错误、不符合要求的消息 我建议您使用一个电子邮件库,比如PHPMailer,您用它来标记这个问题