Манипулировать элементами HTML в index.html через файл php - PullRequest
0 голосов
/ 04 сентября 2018

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

Это код, который у меня сейчас есть:

HTML:

<div id="contact-content" class="format-div">
    <form id="contact-form" action="/contact-form.php" method="post">
        <label for="contact-name">Name</label>
        <input type="text" id="contact-name" name="nameIn" placeholder="Enter 
       your name!">
        <label for="email-address">E-mail</label>
        <input type="text" id="email-address" name="emailIn" placeholder="Enter your e-mail address!">
        <label for="contact-message">Message</label>
        <textarea id="contact-message" name="messageIn" placeholder="All this space to fill with words..."
                  style="height:200px"></textarea>
        <button type="submit" name="submit-mail"><i class="far fa-paper-plane"></i></button>
    </form>
</div>

PHP:

if (isset($_POST['submit-mail'])) {

    $name = $_POST['nameIn'];
    $address = $_POST['emailIn'];
    $message = $_POST['messageIn'];
    $error = "";

    if($name == '') $error .= 'Please fill in your name';

    if (!filter_var($address, FILTER_VALIDATE_EMAIL)) $error .= 'The e-mail is invalid';

    $mailTo = "myemail@mysite.come";
    $subject = "FROM WEBSITE: ".$name;
    $header = "Mail from: ".$name.", ".$address."\n\n";

    mail($mailTo, $subject, $message, $header);
    header("Location: index.html?mailsent");
}

Что я собираюсь с сообщениями об ошибках

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Где-то на вашей html-странице в основном вверху, возможно, вам следует перехватить переменную GET, если она была установлена. также вы можете отображать ошибку аналогично.

if(isset($_GET['mailsent'])){echo "Email Sent";} else if(isset($error)){echo $error;}

Также, если index.html не является страницей с кодом формы, он не будет иметь доступа к переменной error, поэтому.

изменить header("Location: index.html?mailsent"); на header("Location: index.html?error=".$error."&mailsent=");

и поскольку ваша html-страница в идеале должна анализировать php, это должна быть php-страница, т.е. index.php

header("Location: index.php?error=".$error."&mailsent=");

конечно, переименуйте страницу index.html в index.php. если вы не хотите этого делать, используйте подход JavaScript.

0 голосов
/ 04 сентября 2018

Внутри HTML-тега вы можете поместить это: <php if (isset($_POST['submit-mail'])) { echo $error; } ?>, поэтому, если будет ошибка, она будет отображаться внутри HTML-тега

...