Я не могу получить contact.php для отправки результатов на мою электронную почту - PullRequest
0 голосов
/ 07 октября 2018

Ниже моя форма contact.php, а также фрагмент кода формы на сайте.Вопрос в том, что из формы на мой электронный адрес ничего не отправляется по желанию.И проверка по умолчанию для пустых записей не работает.Это сайт appstrap, размещенный на GoDaddy.

Я не уверен, почему на мой электронный адрес ничего не отправлено.Мысли?

contact.php

<?php
/**
 * PHP Contact form
 *
 * Add basic form validation: required fields & email address valid
 * Sends email to
 */
$email_to = 'info@swiftpros.com'; // update to your email
$email_to_name = 'info@swiftpros.com'; // update to your name
$form_message = '<p>Please use the form below to contact us.</p>';
$form_errors = array();
$form_values = $_POST; // Optionally change to $_GET & <form action="contact.php" method="get"> on form
$required_fields = array( // if any of these fields are blank are error will show
  'contact-name' => 'Name',
  'contact-email' => 'Email',
  'contact-message' => 'Message',
);

if (!empty($form_values)) {
  // Form was submitted, validate required fields
  if (!empty($required_fields)) {
    foreach ($required_fields as $required => $label) {
      if (empty($form_values[$required])) {
        $form_errors[$required] = "The $label field is required and cannot be left blank."; //Message to show use
      }
    }
  }

  if (!empty($form_values['contact-email'])) {
    // Email address submitted, validate it
    // Remove all illegal characters from email
    $email = filter_var($form_values['contact-email'], FILTER_SANITIZE_EMAIL);

    // Validate e-mail
    if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
      // Valid, send email
      require 'assets/plugins/PHPMailer/PHPMailerAutoload.php';
      $mail = new PHPMailer;
      $mail->setFrom($email, $form_values['contact-name']);
      $mail->addAddress($email_to, $email_name);
      $mail->Subject = 'Contact form enquiry from ' . $form_values['contact-name'];
      $email_body = array();
      $email_body[] = '<strong>Email:</strong> ' . $form_values['contact-email'] .'<br />';
      $email_body[] = '<strong>Name:</strong> ' . $form_values['contact-name'] .'<br />';
      $email_body[] = '<strong>Message:</strong> ' . $form_values['contact-message'] .'<br />';
      $email_body[] = 'Email sent at '. date('r', time());
      $mail->msgHTML(implode('<br />', $email_body));

      if (!$mail->send()) {
        $form_errors[] = 'Error in sendng enquiry please email us at ' . $email_to . ' instead.';
      }
      else {
        $form_message = '<div class="alert alert-success" role="alert"><strong>Enquiry Successfully sent!</strong> Thank you we will get back to you as soon as possible.</div>';
      }      
    }
    else {
      // Invalid
      $form_errors['contact-email'] = 'The email address inputted is invalid.';
    }
  }

  // Make errors into message to user
  if (!empty($form_errors)) {
    $form_message = '<div class="alert alert-danger" role="alert"><strong>Error!</strong> The following errors have occurred submitting the form: <hr />' . implode('<br />', $form_errors) .'</div>';
  }  
}
?>

HTML Форма

<form id="contact-form" action="contact.php" role="form" method="POST">
  <div class="form-group" data-animate="fadeInDown" data-animate-delay="0.2">
    <label class="sr-only" for="contact-name">Name</label>
    <input type="text" class="form-control" id="contact-name" placeholder="Name">
  </div>
  <div class="form-group" data-animate="fadeInDown" data-animate-delay="0.3">
    <label class="sr-only" for="contact-email">Email</label>
    <input type="email" class="form-control" id="contact-email" placeholder="Email">
  </div>
  <div class="form-group" data-animate="fadeInDown" data-animate-delay="0.4">
    <label class="sr-only" for="contact-message">Message</label>
    <textarea rows="5" class="form-control" id="contact-message" placeholder="Message"></textarea>
  </div>
  <input type="submit" class="btn btn-outline-primary btn-lg" value="Send Message">
</form>

1 Ответ

0 голосов
/ 07 октября 2018

В HTML-форме вы не задаете имена входов, вы просто присваиваете их идентификаторам, например:

У вас есть <input type="text" class="form-control" id="contact-name" placeholder="Name"> Отсутствует одно имя атрибута, это имячто PHP будет использовать для получения входного значения, поэтому, когда ваш код выполняет if (!empty($form_values['contact-email'])), он вернет false, поскольку у вас нет ввода с именем contact-email, попробуйте приведенную ниже форму, и она должна работать.

<form id="contact-form" action="contact.php" role="form" method="POST">
  <div class="form-group" data-animate="fadeInDown" data-animate-delay="0.2">
    <label class="sr-only" for="contact-name">Name</label>
    <input type="text" class="form-control" id="contact-name" placeholder="Name" name="contact-name">
  </div>
  <div class="form-group" data-animate="fadeInDown" data-animate-delay="0.3">
    <label class="sr-only" for="contact-email">Email</label>
    <input type="email" class="form-control" id="contact-email" name="contact-email" placeholder="Email">
  </div>
  <div class="form-group" data-animate="fadeInDown" data-animate-delay="0.4">
    <label class="sr-only" for="contact-message">Message</label>
    <textarea rows="5" class="form-control" id="contact-message" placeholder="Message" name="contact-message"></textarea>
  </div>
  <input type="submit" class="btn btn-outline-primary btn-lg" value="Send Message">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...