我没有收到联系表单的电子邮件:索引未定义错误

时间:2019-01-09 21:35:41

标签: javascript php jquery ajax forms

我有一个联系表,我希望将结果发送到我的电子邮件中。我尝试使用php和ajax来做到这一点,但我在php脚本中得到并索引了未定义的错误。

这是我使用的php代码:

<?php


    $user_email = "fr.sven.fr@hotmail.com";

    $mail = array(
        "name" => htmlspecialchars($_POST['cf-name']),
        "email" => htmlspecialchars($_POST['cf-email']),
        "subject" => htmlspecialchars($_POST['cf-subject']),
        "message" => htmlspecialchars($_POST['cf-message'])
    );

    function validate($arr){

        return !empty($arr['name']) && strlen($arr['message']) > 20 && filter_var($arr['email'],FILTER_VALIDATE_EMAIL);

    }

    if(validate($mail)){

        echo mail($user_email, $mail['subject'],
            "Name : {$mail['name']}\n"
            ."E-mail : {$mail['email']}\n"
            ."Message : {$mail['message']}"
        );

    }


?>

这是表单:HTML

<form id="contact-form" class="contact-form style-2">
  <div class="form-row">
    <div class="form-col-2">
      <input type="text" name="cf-name" placeholder="Naam*">
    </div>
    <div class="form-col-2">
      <input type="text" name="cf-email" placeholder="Email*">
    </div>
  </div>
  <div class="form-row">
    <div class="form-col-2">
      <input type="tel" name="cf-phone" placeholder="Telefoonnummer">
    </div>
    <div class="form-row">
      <div class="form-col">
        <textarea name="cf-message" rows="2" placeholder="Vragen/verzoeken"></textarea>
      </div>
    </div>
    <button type="submit" class="btn style-3" data-type="submit">Verzend</button>
    <p class="text-size-small2">Velden met een * zijn vereist.</p>

我也想添加我的jquery代码:

if ($('#contact-form').length) {
  var cf = $('#contact-form');
  cf.append('<div class="message-container"></div>');
  cf.on("submit", function(event) {
    var self = $(this),
      text;
    console.log(self.serialize())
    var request = $.ajax({
      url: "bat/mail.php",
      type: "post",
      data: self.serialize()
    });
    request.then(function(data) {
      if (data >= "0") {
        text = "Your message has been sent successfully!";
        cf.find('input:not([type="submit"]),textarea').val('');
        $('.message-container').html('<div class="alert-box success"><i class="icon-smile"></i><p>' + text + '</p></div>')
          .delay(150)
          .slideDown(300)
          .delay(4000)
          .slideUp(300, function() {
            $(this).html("");
          });
      } else {
        if (cf.find('textarea').val().length < 20) {
          text = "Message must contain at least 20 characters!"
        }
        if (cf.find('input').val() == "") {
          text = "All required fields must be filled!";
        }
        $('.message-container').html('<div class="alert-box error"><i class="icon-warning"></i><p>' + text + '</p></div>')
          .delay(150)
          .slideDown(300)
          .delay(4000)
          .slideUp(300, function() {
            $(this).html("");
          });
      }
    }, function() {
      $('.message-container').html('<div class="alert-box error"><i class="icon-warning"></i><p>Connection to server failed!</p></div>')
        .delay(150)
        .slideDown(300)
        .delay(4000)
        .slideUp(300, function() {
          $(this).html("");
        });
    });
    event.preventDefault();
  });
}

当我填写联系表格时,它记录它成功发送了一条消息,但是在我的邮件中我什么都没收到。然后我检查了我的php文件,发现它对所有变量都给出了索引未定义的错误。有人知道我做错了吗?

0 个答案:

没有答案