Мне нужна помощь, чтобы исправить пустые письма из моей формы - PullRequest
1 голос
/ 23 сентября 2019

Я получаю каждый день примерно в один и тот же час 6 пустых электронных писем из моей контактной формы, если я заполняю форму на веб-сайте, вся информация проходит, и я получаю электронное письмо с деталями, у меня есть подтверждение длямоя форма, но все еще получаю пустые письма.Что мне нужно сделать?

Сначала я получал сообщение об ошибке для некоторых строк в своем php, но оно уже исправлено, но я все еще получаю пустые письма.

Это мойКод PHP:

$fname = $lname = $email = $tel = $address = $project = $message = '';

if (isset($_POST['fname'])) {
    $fname = $_POST['fname'];
}

if (isset($_POST['lname'])) {
    $lname = $_POST['lname'];
}

if (isset($_POST['email'])) {
    $email = $_POST['email'];
}

if (isset($_POST['tel'])) {
    $tel = $_POST['tel'];
}

if (isset($_POST['address'])) {
    $address = $_POST['address'];
}

if (isset($_POST['project'])) {
    $project = $_POST['project'];
}

if (isset($_POST['message'])) {
    $message = $_POST['message'];
}

    $to = '...';
    $email_subject = "$fname $lname Contact You from ... :";
    $email_body = "You have received a new message from your website contact form.<br/>"."Here are the details:<br/><br/> Name: $fname $lname<br/> Email: $email<br/> Phone: $tel<br/> Address: $address<br/> Project: $project<br/> Message:\n$message";
    $headers  = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $headers .= 'From: ...' . "\r\n";
    $headers .= 'Reply-To: ...' . "\r\n";
    $headers .= 'X-Mailer: PHP/' . phpversion();

    if(mail($to,$email_subject,$email_body,$headers)) {
            echo "OK";
        }

Это мой HTML-код:

                <form action="" method="post" role="form" class="contactForm" enctype="multipart/form-data">
                    <div class="row">
                        <div class="col-lg-6 form-group">
                            <label for="fname">First Name*</label>
                            <input type="text" class="form-control" name="fname" id="fname" data-rule="minlen:3" data-msg="*Please Enter at Least 3 Chars" />
                            <div class="validation"></div>
                        </div>
                        <div class="col-lg-6 form-group">
                            <label for="lname">Last Name*</label>
                            <input type="text" class="form-control" name="lname" id="lname" data-rule="minlen:3" data-msg="*Please Enter at Least 3 Chars" />
                            <div class="validation"></div>
                        </div>
                        <div class="col-lg-6 form-group">
                            <label for="tel">Phone Number*</label>
                            <input type="tel" class="form-control" name="tel" id="tel" data-rule="minlen:10" data-msg="*Please Enter a Valid Phone Number" />
                            <div class="validation"></div>
                        </div>
                        <div class="col-lg-6 form-group">
                            <label for="email">Email Address*</label>
                            <input type="email" class="form-control" name="email" id="email" data-rule="email" data-msg="*Please Enter a Valid Email Address" />
                            <div class="validation"></div>
                        </div>
                        <div class="col-lg-12 form-group">
                            <label for="address">Location (Address)</label>
                            <input type="text" class="form-control" name="address" id="address" />
                            <div class="validation"></div>
                        </div>
                        <div class="col-lg-12 form-group">
                            <label for="project">Select Project / Service</label>
                            <select type="text" class="form-control" name="project" id="project">
                                <option selected value="">Select Project</option>
                                <option value="Emergency HVAC Service">Emergency HVAC Service</option>
                                <option value="Air Conditioner Installation">Air Conditioner Installation</option>
                                <option value="Air Conditioner Repair">Air Conditioner Repair</option>
                                <option value="Air Conditioner Replacement">Air Conditioner Replacement</option>
                                <option value="Duct Repair">Duct Repair</option>
                                <option value="Duct Replacement">Duct Replacement</option>
                                <option value="Furnace Repair">Furnace Repair</option>
                                <option value="HVAC Maintenance">HVAC Maintenance</option>
                                <option value="Air Duct Cleaning">Air Duct Cleaning</option>
                            </select>
                            <div class="validation"></div>
                        </div>
                        <div class="col-lg-12 form-group">
                            <label for="message">Message</label>
                            <textarea class="form-control" name="message" id="message"></textarea>
                            <div class="validation"></div>
                        </div>
                        <div id="hide-button" class="col-lg-12 text-center">
                            <button type="submit" class="btn btn-primary">Send Message</button>
                        </div>
                        <div class="col-lg-10 offset-lg-1 text-center">
                            <div id="sendmessage">Your message has been sent. Thank you!</div>
                            <div id="errormessage">Sorry! Something went wrong. Try again.</div>
                        </div>
                    </div>
                </form>

Проверка подлинности Javascript:

jQuery(document).ready(function($) {
  "use strict";

  //Contact
  $('form.contactForm').submit(function() {
    var f = $(this).find('.form-group'),
      ferror = false,
      emailExp = /^[^\s()<>@,;:\/]+@\w[\w\.-]+\.[a-z]{2,}$/i;

    f.children('input').each(function() { // run all inputs

      var i = $(this); // current input
      var rule = i.attr('data-rule');

      if (rule !== undefined) {
        var ierror = false; // error flag for current input
        var pos = rule.indexOf(':', 0);
        if (pos >= 0) {
          var exp = rule.substr(pos + 1, rule.length);
          rule = rule.substr(0, pos);
        } else {
          rule = rule.substr(pos + 1, rule.length);
        }

        switch (rule) {
          case 'required':
            if (i.val() === '') {
              ferror = ierror = true;
            }
            break;

          case 'minlen':
            if (i.val().length < parseInt(exp)) {
              ferror = ierror = true;
            }
            break;

          case 'email':
            if (!emailExp.test(i.val())) {
              ferror = ierror = true;
            }
            break;

          case 'checked':
            if (!i.attr('checked')) {
              ferror = ierror = true;
            }
            break;

          case 'regexp':
            exp = new RegExp(exp);
            if (!exp.test(i.val())) {
              ferror = ierror = true;
            }
            break;
        }
        i.next('.validation').html((ierror ? (i.attr('data-msg') !== undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
      }
    });
    f.children('textarea').each(function() { // run all inputs

      var i = $(this); // current input
      var rule = i.attr('data-rule');

      if (rule !== undefined) {
        var ierror = false; // error flag for current input
        var pos = rule.indexOf(':', 0);
        if (pos >= 0) {
          var exp = rule.substr(pos + 1, rule.length);
          rule = rule.substr(0, pos);
        } else {
          rule = rule.substr(pos + 1, rule.length);
        }

        switch (rule) {
          case 'required':
            if (i.val() === '') {
              ferror = ierror = true;
            }
            break;

          case 'minlen':
            if (i.val().length < parseInt(exp)) {
              ferror = ierror = true;
            }
            break;
        }
        i.next('.validation').html((ierror ? (i.attr('data-msg') != undefined ? i.attr('data-msg') : 'wrong Input') : '')).show('blind');
      }
    });
    if (ferror) return false;
    else var str = $(this).serialize();
    var action = $(this).attr('action');
    if( ! action ) {
      action = 'mail/mailer.php';
    }
    $.ajax({
      type: "POST",
      url: action,
      data: str,
      success: function(msg) {
        // alert(msg);
        if (msg == 'OK') {
          $('#hide-button').addClass("hide");
          $("#sendmessage").addClass("show");
          $("#errormessage").removeClass("show");
          $('.contactForm').find("input, textarea").val("");
        } else {
          $('#hide-button').removeClass("hide");
          $("#sendmessage").removeClass("show");
          $("#errormessage").addClass("show");
        }

      }
    });
    return false;
  });

});

Скажите, нужно ли мне добавить свой jQuery.Я очень хорошо знаком с html и css, но не так уж много с PHP и Javascript.

1 Ответ

0 голосов
/ 23 сентября 2019

Похоже, у вас есть проверка на стороне клиента в виде некоторого JavaScript / jQuery, но факт в том, что вы не можете доверять клиенту .Проверка на стороне клиента призвана помочь пользователю, но сервер не должен полагаться на него .

Кто-то может сгенерировать POST-запрос к PHP-скрипту обработки формы, не используя браузер навсе, чтобы они могли отправлять любые старые данные, которые им нравятся.Вероятно, вы видите электронные письма от какого-то робота-робота или аналогичного, которые делают именно это.

Итак, вам нужно добавить некоторую похожую логику проверки в ваш PHP-код (который явно находится на стороне сервера, и поэтомуболее надежный, чем код на стороне клиента).Например, чтобы проверить, что поле lname не пустое, вы можете сделать:

if (empty($lname)) {
    showErrorPage('Please enter a last name!');
    exit; // To halt processing.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...