猿问

提交 Bootstrap 联系模式后重定向到新页面

用户可以通过 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

?>


泛舟湖上清波郎朗
浏览 218回答 2
2回答

郎朗坤

基于:该站点是在 Jekyll 中构建的...我们假设有问题的页面是一个静态 HTML 页面。在这种情况下,您的标头不是由 php 脚本设置的。这可能解释了为什么 php 函数&nbsp;header()没有设置所需的标题。在您共享的代码示例中,了解如何调用此 php 脚本非常重要。我的猜测是您将表单数据作为 POST 直接从表单发送,或者使用javascript/ajax将数据发送到您的 php 脚本并处理响应。您可能希望在 javascript 中处理成功案例,并在 php 函数返回成功后处理重定向。但是,如果打算使用 php 的header()函数处理重定向,请考虑将联系表单页面移动到独立的 .php 页面。(但是,鉴于您已经采用了基于 Jekyll 的站点生成器,我不确定我是否会建议此选项)

达令说

实际上,如果您的脚本是用 html&nbsp;header manual编写的,则可能会导致问题。但是在这种情况下使用 jquery 或 js 脚本看起来更方便,我的意思是如果您不在控制器中使用 php 标头或类似的东西
随时随地看视频慕课网APP
我要回答