PHP: Очистить формы записи при успешной отправке - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть простая одна страница контактная форма со следующей логикой

  • Если пользователь нажимает кнопку отправки и возникает ошибка, отобразите ошибку и сохраните значения формы
  • Если пользователь нажимает кнопку отправки, и все хорошо, покажите сообщение об успешном завершении и очистите значения формы

Вот полный код.Я использую $_POST = array();, чтобы попытаться очистить значения, но, похоже, не работает.

<form id="contact_form" method="POST">
    Name<br/><input type="text" name="name"  value="<?php echo isset($_POST["name"]) ? $_POST["name"] : ''; ?>" required><br/>
    Email<br/><input type="text" name="email" value="<?php echo isset($_POST["email"]) ? $_POST["email"] : ''; ?>" required><br/>
    ...
    <input type="submit" value="Send"><input type="reset" value="Clear">
</form>

<?php 
    if ($_SERVER["REQUEST_METHOD"] == "POST") { 
        $name = $_POST['name'];
        $email = $_POST['email'];
        ...

        if (mail($recipient, $subject, $message, $headers) == TRUE) {          
            $_POST = array();
            echo "Your msg has been sent.";
        }
        else {
            echo "An error occurred while trying to send your message.";
        }
    }
?>

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 12 ноября 2018

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

<?php 
$success = false;
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $name = $_POST['name'];
    $email = $_POST['email'];
    ...

    if (mail($recipient, $subject, $message, $headers) == TRUE) {          
        $success = true;
        echo "Your msg has been sent.";
    }
    else {
        echo "An error occurred while trying to send your message.";
    }
}
?>
<form id="contact_form" method="POST">
    Name<br/><input type="text" name="name" value="<?php echo (!$success) ? $_POST["name"] : ""; ?>" required><br/>
    Email<br/><input type="text" name="email" value="<?php echo isset($_POST["email"]) && (!$success) ? $_POST["email"] : ''; ?>" required><br/>
    ...
    <input type="submit" value="Send"><input type="reset" value="Clear">
</form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...