Переменные Php не отображаются в почте - PullRequest
0 голосов
/ 12 июня 2018

Я создаю веб-сайт, на котором я работаю под Wamp server 3, и у меня есть контактная форма php, которую я хочу, чтобы посетители могли отправлять по почте прямо с веб-сайта.

<?php

$myemail  = "test.xample@xample.com";

if (isset($_POST['email'])) 
{
    echo "Thank you for contacting us!";

    /* Set e-mail recipient */

    /* Check all form inputs using check_input function */
    $name = ($_POST['name']);
    $subject  = ($_POST['subject']);
    $email    = ($_POST['email']);
    $message = ($_POST['message']);
    $mail = "Hello!

    Your contact form has been submitted by:

    Name: $name
    E-mail: $email

    Message:
    $Message

    End of message
    ";

    /* Send the message using mail() function */
    mail($myemail, $subject, $message);
}
?>

Я проверил код, запустив SMTP Server и функцию mail(), и все работает, но моя проблема в том, что мои переменные $name, $message, $email не отображаются в почте

Вот как должна выглядеть почта:

$mail = "Hello!

    Your contact form has been submitted by:

    Name: $name
    E-mail: $email

    Message:
    $Message

    End of message
    ";

Но результат письма выглядит следующим образом:

Здравствуйте!

Ваша контактная формаотправлено:

Имя:

E-mail:

Сообщение:

Конец сообщения

Итакзначения переменных пустые ...

Это HTML-код вида:

<form class="mt-5 ml-5 mr-5" method="POST" action="handler.php" id="reused_form">
  <p id="contactForm" class="h4 text-center mt-5"><strong>Kontakta oss</strong></p>

  <!-- input text(Name) -->
  <div class="md-form">
    <i class="fa fa-user prefix">*</i>
    <input type="text" name="name" id="name" class="form-control">
    <label for="name">Your name</label>
  </div>

  <!-- input email -->
  <div class="md-form mt-5">
    <i class="fa fa-envelope prefix">*</i>
    <input type="email" name="email" id="email" class="form-control validate">
    <label for="email" data-error="Wrong" data-success="Right">Your email</label>
  </div>

  <div class="md-form mt-5">
    <i class="fa fa-user prefix"></i>
    <input type="text" id="subject" class="form-control">
    <label for="subject">Subject</label>
  </div>

  <!-- input message -->
  <div class="md-form mt-5">
    <i class="fa fa-pencil prefix">*</i>
    <textarea type="text" name="message" id="message" maxlength="5000" class="form-control md-textarea" rows="3"></textarea>
    <label for="textareaPrefix">Message</label>
  </div>

  <div class="text-center mt-4 mb-4">
    <button class="btn danger-color" type="submit">Submit</button>
  </div>
</form>

Было бы очень приятно, если бы кто-то мог помочь мне с этой проблемой ...

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Отладка 101:

Убедитесь, что переменные размещены должным образом.Добавьте параметр var_dump

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

Если все правильно, проверьте значения после обработки:

    $name = ($_POST['name']);
    $subject  = ($_POST['subject']);
    $email    = ($_POST['email']);
    $message = ($_POST['message']);
    var_dump( $name, $subject, $email, $message );

Если все правильно, убедитесь, что переменные обработаны, заключив их в фигурные скобки.

$mail = "Hello!

    Your contact form has been submitted by:

    Name: $name
    E-mail: {$email}

    Message:
    {$Message}

    End of message
    ";

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

0 голосов
/ 12 июня 2018

Удалите эти фигурные скобки () в сообщении, как показано ниже

$name = $_POST['name'];
$subject  = $_POST['subject'];
$email    = $_POST['email'];
$message = $_POST['message'];

, и отправьте по почте, как указано ниже mail ($ myemail, $ subject, $ mail);

...