用户可以通过 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 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
基于:
该站点是在 Jekyll 中构建的...
我们假设有问题的页面是一个静态 HTML 页面。在这种情况下,您的标头不是由 php 脚本设置的。这可能解释了为什么 php 函数 header()
没有设置所需的标题。
在您共享的代码示例中,了解如何调用此 php 脚本非常重要。我的猜测是您将表单数据作为 POST 直接从表单发送,或者使用javascript/ajax将数据发送到您的 php 脚本并处理响应。
您可能希望在 javascript 中处理成功案例,并在 php 函数返回成功后处理重定向。
但是,如果打算使用 php 的header()
函数处理重定向,请考虑将联系表单页面移动到独立的 .php 页面。(但是,鉴于您已经采用了基于 Jekyll 的站点生成器,我不确定我是否会建议此选项)
达令说
TA贡献1821条经验 获得超6个赞
实际上,如果您的脚本是用 html header manual编写的,则可能会导致问题。但是在这种情况下使用 jquery 或 js 脚本看起来更方便,我的意思是如果您不在控制器中使用 php 标头或类似的东西
- 2 回答
- 0 关注
- 217 浏览
添加回答
举报
0/150
提交
取消