Ajax 网络表单-机器人通过所有检查时,人类不能。?

Ajax 网络表单-机器人通过所有检查时,人类不能。?,ajax,phpmailer,Ajax,Phpmailer,我有下面的代码,相当标准-但似乎机器人甚至没有在输入字段中输入任何内容就可以通过了!作为一个普通人,在提交时检查,所以我总是收到空邮件 这是我的代码,如果有人有任何想法: javascript: $('form.ajax').on('submit', function () { if($(".field-b").val()) { return false; } var that = $(this), url = that.attr('actio

我有下面的代码,相当标准-但似乎机器人甚至没有在输入字段中输入任何内容就可以通过了!作为一个普通人,在提交时检查,所以我总是收到空邮件

这是我的代码,如果有人有任何想法:

javascript:

    $('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,您用它来标记这个问题