Переадресация на новую страницу после отправки модального контакта Bootstrap - PullRequest
1 голос
/ 15 мая 2019

Пользователи могут связаться с нами через всплывающее окно Bootstrap. В настоящее время он передает все и отображает сообщение об успехе (все еще в модальном всплывающем окне). Я хотел бы вместо повторения сообщения перенаправить на совершенно новую страницу (а не на другое всплывающее окно).

Я пытался использовать "header ('Location: contact-thank-you.html'); exit ();", что кажется очевидным решением. Тем не менее, это просто рассматривается как еще одно эхо - он печатает всю страницу (HTML и все) в модальном всплывающем окне.

В консоли нет сообщений об ошибках.

Там нет пробелов выше начала php-файла (что, как я понимаю, может вызвать проблемы).

Я могу решить эту проблему путем перенаправления через javascript, но я хочу понять, почему это не работает. Я не повторяю что-либо еще ранее на странице (хотя у меня есть ошибка, если кто-то не отправляет необходимую часть информации), поэтому не должен работать header ()? Разве это не работает с Bootstrap?

Сайт построен на Jekyll, если это имеет какое-либо отношение к проблеме.

Вот примерный план моего php, с большим количеством лишних вещей, удаленных для вашего удовольствия от просмотра :):

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

        $name = strip_tags(trim($_POST["name"]));
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);

        // Require Email
        if (empty($email)) {
            http_response_code(400); 
            exit;
        }

        // Set the email subject.
        $subject = "$name - New Contact";

        // Build the email content.
        $email_content = ""; 
        $email_content .= "Name: $name\n";
        $email_content .= "Email: $email\n";
        $email_headers = "From: $name <$email>";
        $recipient = "myname@mycompany.com";

        send_mail($recipient, $subject, $email_content, $email_headers);

        // confirm message was sent
        header('Location: contact-thank-you.html');
        exit();
    }
    // removed mailer function and other sections unessential to this question
?>

Ответы [ 2 ]

1 голос
/ 22 мая 2019

На основе:

Сайт построен на Jekyll ...

Предположим, что рассматриваемая страница является статической HTML-страницей.В этом случае ваши заголовки не устанавливаются скриптом php.Это может объяснить, почему функция php header() не устанавливает нужные заголовки.

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

Вполне вероятно, что вы захотите обработать случай успеха в javascript, и обработать перенаправление , как только функция php вернула успех.

Однако, если вы намерены обработать перенаправление сphp header(), затем рассмотрите возможность перемещения страницы формы контакта на отдельную страницу .php.(Однако я не уверен, что рекомендовал бы этот вариант, учитывая тот факт, что вы уже приняли генератор сайтов на основе Jekyll)

0 голосов
/ 15 мая 2019

на самом деле, это может вызвать проблемы, если ваш скрипт написан с использованием html header manual .Но использовать jquery или js-скрипт в таких случаях удобнее, я имею в виду, если вы не используете php-заголовок в контроллере или что-то в этом роде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...