Почему моя PHP-форма не работает? Я получаю электронное письмо, но в нем нет содержимого

#php #html #css #forms #phpmyadmin

#php #HTML #css #формы #phpmyadmin

Вопрос:

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

Это HTML-код формы

 <form action="contactform.php" method="post" name="form" class="p-5 bg-white">
    
    <div class="row form-group">
        <div class="col-md-6 mb-3 mb-md-0">
            <label class="text-black" for="fname">First Name</label>
            <input type="text" id="fname" class="form-control">
        </div>
        <div class="col-md-6">
            <label class="text-black" for="lname">Last Name</label>
            <input type="text" id="lname" class="form-control">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="text-black" for="email">Email</label> 
            <input type="email" id="email" class="form-control">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="text-black" for="subject">Subject</label> 
            <input type="subject" id="subject" class="form-control">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <label class="text-black" for="mssg">Message</label>
            <textarea name="mssg" id="mssg" cols="30" rows="7" class="form-control" placeholder="Write your notes or questions here..."></textarea>
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <input type="submit" value="Send Message" class="btn btn-primary py-2 px-4 text-white">
        </div>
    </div>
</form>

  

Это PHP-код

 <?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    $to = "alyyashar@gmail.com";
    $subject = "New email from your site!";
    $fname = $_POST['fname'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    
    $headers .= "MIME-Version: 1.0rn";
    $headers .= "Content-Type: text/html; charset=UTF-8rn";
    
    $title = '<h3>Hello! You have received a new mail from your website!</h3>';
    
    $body = "$title
            <br/>
            <b>From:</b> $fname
            <br/>
            <b>E-Mail:</b> $email
            <br/>
            <b>Message:</b>n$message
            <br/>
            <br/>";

    if (mail($to, $subject, $body, $headers)){
        echo "<h1>Sent Successfully! Thank you"." ".$fname.", We will contact you shortly!</h1>";
    } else { 
        echo "Something went wrong!";
    }
}
?>
<br>
<a href="/">Back to Homepage</a>

  

Это электронное письмо, которое я получаю

Скриншот электронного письма

Когда я ввожу информацию в форму и нажимаю отправить сообщение, я получаю электронное письмо, но в нем нет содержимого.

Комментарии:

1.Хорошее расположение отступов в коде поможет нам прочитать код и, что более важно, поможет вам отладить ваш код . Взгляните на стандарт кодирования для вашей собственной выгоды. Вас могут попросить внести изменения в этот код через несколько недель / месяцев, и в конце вы поблагодарите меня.

Ответ №1:

Элементы формы не имеют name атрибутов, которые браузер использует для отправки их пар имя / значение на сервер. Поэтому, пока он отправляет форму, ни одно из значений не включается.

Например, это:

 <input type="text" id="fname" class="form-control">
  

Должно быть так:

 <input type="text" id="fname" class="form-control" name="fname">
  

То же самое исправление необходимо будет повторить для остальных элементов формы.