Скрытие контактной формы после отправки с использованием PHP? [Дубликат]

0

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

<form id="contact" method="post" action="index.php">
    <fieldset>
        <label for="name">Full Name<span class="red"> *</span></label>
        <input type="text" name="name" title="Enter your name" required>

        <label for="email">E-mail Address<span class="red"> *</span></label>
        <input type="email" name="email" placeholder="[email protected]" title="Enter your e-mail address" required>

        <label for="phone">Phone Number</label>
        <input type="tel" name="phone" title="Enter your phone number" placeholder="ex. (555) 555-5555">

        <label for="message">Questions and Comments<span class="red"> *</span></label>
        <textarea type="text" name="message" title="Enter your questions or comments" required></textarea>                                                                                          

        <label>What is 4+2? (Anti-spam)<span class="red"> *</span></label>
        <input type="text" name="human" placeholder="Answer Here" title="Answer Here" required>

        <input type="submit" name="submit" class="button" id="submit" value="Send Us A Message" title="Send us a message" />
        <p class="red">
            * Indicates the field is required.
        </p>
    </fieldset>
    <!-- Contact Form Details -->
    <?php $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $from = 'This message has been sent from your website.';
        $to = '[email protected]';
        $subject = 'From your contact form';
        $human = $_POST['human'];

        $body = " From: $name\n E-Mail: $email\n Message:\n $message";

        if ($_POST['submit'] && $human == '6') {
            if (mail($to, $subject, $body, $from)) {
                echo '
    <h2>Thank You!</h2>
    <span class="message">
        Your message has been sent!
    </span>';
            } else {
                echo '
    <h2>Oops!</h2>
    <span class="message">
        Something went wrong, go back and try again!
    </span>';
            }
        } else if ($_POST['submit'] && $human != '6') {
            echo '
            <h2>Incorrect Answer!</h2>
    <span class="message">
        The correct answer is 6. Please try again.
    </span>';
        }
    ?>
</form>

ОБНОВЛЕНИЕ: после нескольких предложений я понял, что, поскольку страница была перезагружена после отправки формы, попытка скрыть форму была бессмысленной. Вы попадаете в submit, форма исчезает, перезагружается страница, форма снова появляется. Поэтому я окружил это в контейнере и изменил CSS, поэтому сообщение появляется над формой, и это нормально. Спасибо всем за помощь. Он оценил!

  • 1
    PHP - это серверный язык. К тому времени, когда ваша страница была обработана, PHP уже давно запущен. Этот тип вопроса задавался довольно много раз. Вы можете POST вернуться к своей форме и скрыть ее таким образом, но это не может быть сделано в интерактивном режиме, как с javascript. Вот пример . Вы также должны попытаться использовать поиск по SO.
Теги:
forms

3 ответа

0

Попробуй это:

if(!isset($_POST['submit']))
{
    <form id="contact" method="post" action="index.php">
    <!--Contents in between-->
    </form>
}

Также измените свой html на:

<form id="contact" method="post" action="index.php">
    <fieldset>
        <label for="name">Full Name<span class="red"> *</span></label>
        <input type="text" name="name" title="Enter your name" required>

        <label for="email">E-mail Address<span class="red"> *</span></label>
        <input type="email" name="email" placeholder="[email protected]" title="Enter your e-mail address" required>

        <label for="phone">Phone Number</label>
        <input type="tel" name="phone" title="Enter your phone number" placeholder="ex. (555) 555-5555">

        <label for="message">Questions and Comments<span class="red"> *</span></label>
        <textarea type="text" name="message" title="Enter your questions or comments" required></textarea>                                                                                          

        <label>What is 4+2? (Anti-spam)<span class="red"> *</span></label>
        <input type="text" name="human" placeholder="Answer Here" title="Answer Here" required>

        <input type="submit" name="submit" class="button" id="submit" value="Send Us A Message" title="Send us a message" />
        <p class="red">
            * Indicates the field is required.
        </p>
    </fieldset>
</form>
    <!-- Contact Form Details -->
    <?php $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $from = 'This message has been sent from your website.';
        $to = '[email protected]';
        $subject = 'From your contact form';
        $human = $_POST['human'];

        $body = " From: $name\n E-Mail: $email\n Message:\n $message";

        if ($_POST['submit'] && $human == '6') {
            if (mail($to, $subject, $body, $from)) {
                echo '
    <h2>Thank You!</h2>
    <span class="message">
        Your message has been sent!
    </span>';
            } else {
                echo '
    <h2>Oops!</h2>
    <span class="message">
        Something went wrong, go back and try again!
    </span>';
            }
        } else if ($_POST['submit'] && $human != '6') {
            echo '
            <h2>Incorrect Answer!</h2>
    <span class="message">
        The correct answer is 6. Please try again.
    </span>';
        }
    ?>

Не включайте Детали контактной информации внутри <form>...</form>

  • 0
    Это не сработает, если капча потерпела неудачу, я думаю.
0

Почему бы не поставить PHP-код выше формы и добавить условие if? Если вы хотите показать форму только один раз для всего сеанса браузера, вы должны использовать php-сессии для хранения флага.

<form id="contact" method="post" action="index.php">
    <fieldset>
        <!-- Contact Form Details -->
        <?php 
        $success = false;
        $name = $_POST['name'];
        $email = $_POST['email'];
        $message = $_POST['message'];
        $from = 'This message has been sent from your website.';
        $to = '[email protected]';
        $subject = 'From your contact form';
        $human = $_POST['human'];

        $body = " From: $name\n E-Mail: $email\n Message:\n $message";

        if ($_POST['submit'] && $human == '6') {
            if (mail($to, $subject, $body, $from)) {
                $success = true;
                echo '
    <h2>Thank You!</h2>
    <span class="message">
        Your message has been sent!
    </span>';
            } else {
                echo '
    <h2>Oops!</h2>
    <span class="message">
        Something went wrong, go back and try again!
    </span>';
            }
        } else if ($_POST['submit'] && $human != '6') {
            echo '
            <h2>Incorrect Answer!</h2>
    <span class="message">
        The correct answer is 6. Please try again.
    </span>';
        }

        if ($success) {
        ?>
        <label for="name">Full Name<span class="red"> *</span></label>
        <input type="text" name="name" title="Enter your name" required>

        <label for="email">E-mail Address<span class="red"> *</span></label>
        <input type="email" name="email" placeholder="[email protected]" title="Enter your e-mail address" required>

        <label for="phone">Phone Number</label>
        <input type="tel" name="phone" title="Enter your phone number" placeholder="ex. (555) 555-5555">

        <label for="message">Questions and Comments<span class="red"> *</span></label>
        <textarea type="text" name="message" title="Enter your questions or comments" required></textarea>

        <label>What is 4+2? (Anti-spam)<span class="red"> *</span></label>
        <input type="text" name="human" placeholder="Answer Here" title="Answer Here" required>

        <input type="submit" name="submit" class="button" id="submit" value="Send Us A Message" title="Send us a message" />
        <p class="red">
            * Indicates the field is required.
        </p>
        <?php } ?>
    </fieldset>

</form>
0

При успехе задайте переменную:

$success = true;

Затем, окружая форму HTML:

<?php echo $success ? '<!--' : ''; ?>
// form here...
<?php echo $success ? '-->' : ''; ?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню