我最近移动了服务器,因为我做了我的php联系表单有点偏斜。
它作为联系表格很好,但重定向功能不再存在。
我在重定向页面上收到此错误:
警告:无法修改标头信息 - 已发送的标头 (输出从/home/content/73/11511973/html/contact.php:14开始) 第20行/home/content/73/11511973/html/contact.php
这是我的contact.php代码:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Order/Enquiry';
$to = 'crookedcartoon@gmail.com';
$subject = "From: ".$_POST['name'];
$body = "From: $name\nE-Mail: $email\n\nMessage:\n\n $message";
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
echo '<p><center><br><img src="images/cat.jpg"><br><br><br><font size="4" face="Tw Cen MT">Your message has been sent! You will now be redirected to the home page.<br><br>Thank you for your message!</font></center></p>';
} else {
echo '<p><center><br><img src="images/cat.jpg"><br><br><br><font size="4" face="Tw Cen MT">Something went wrong, go back and try again! You will now be redirected to the home page.</font></center></p</p>';
}
}
header('Refresh: 3; url=index.html')
?>
这是我的网站,该页面已全面展开:
www.crookedcartoon.co.uk/contact.html
谢谢你, -Alex
答案 0 :(得分:0)
您不得在header()
之前输出任何内容。
在重定向之前删除所有输出。
答案 1 :(得分:0)
只有在写入任何输出之前,才能使用标题功能。基本上是脚本的开始
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
header();
} else {
echo '<p><center><br><img src="images/cat.jpg"><br><br><br><font size="4" face="Tw Cen MT">Something went wrong, go back and try again! You will now be redirected to the home page.</font></center></p</p>';
}
}
答案 2 :(得分:0)
在PHP中,您在使用echo()
之前使用header()
。当您向页面输出内容时,您正在有效地关闭HTTP标头。当您再次尝试使用header()
功能时,因为必须在任何内容之前发送标头,否则您将收到该消息作为错误。
如果您希望他们真正看到页面内容几秒钟,您可以在页面的HTML标题中使用meta-refresh
。
<meta http-equiv="refresh" content="3;url=/index.html">
答案 3 :(得分:0)
您获得的错误准确无误。在HTTP请求/响应中,标头是发送回用户的第一个项目。当您使用echo
输出文本时,您基本上是在告诉PHP“好的,我已经完成了标题,我已准备好开始输出我的回复主体。”
我通常不建议向用户显示消息,仅在几秒钟后自动重定向,因为在整个过程中显示中间页面是不必要的步骤。相反,我可能会在index.html本身上显示“成功”消息。如果你真的想做你想做的事,你可以:
ob_start();
之前拨打echo
,然后在ob_end_flush();
之后拨打header("...");
,或者...... <meta http-equiv="refresh" content="3; url=index.html">
,或者......