在呈现了一些HTML之后,如何重定向PHP?
我知道以前有人问过这个问题,人们会用headerLocation:link.html;太棒了!但我不知道该把它放在哪里,相信我,我已经试过了 基本上,我有一个非常简单的PHP代码,用于发送输入到表单中的信息。代码如下:在呈现了一些HTML之后,如何重定向PHP?,php,Php,我知道以前有人问过这个问题,人们会用headerLocation:link.html;太棒了!但我不知道该把它放在哪里,相信我,我已经试过了 基本上,我有一个非常简单的PHP代码,用于发送输入到表单中的信息。代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Untitled 1</title>
</head>
<body>
<?php
$to='myemail@address.com';
$subject='email subject line';
$qanswer=$_POST['qanswer'];
$FirstName=$_POST['FirstName'];
$Surname=$_POST['Surname'];
$CustomerEmail=$_POST['CustomerEmail'];
$CustomerTelephone=$_POST['CustomerTelephone'];
$PickupLocation=$_POST['PickupLocation'];
$AddressLine1=$_POST['AddressLine1'];
$AddressLine2=$_POST['AddressLine2'];
$TownCity=$_POST['TownCity'];
$County=$_POST['County'];
$Postcode=$_POST['Postcode'];
$Destination=$_POST['Destination'];
$PickupDate=$_POST['PickupDate'];
$PickupTime=$_POST['PickupTime'];
$message="FirstName: ".$FirstName. "\r\n" . "Surname: ".$Surname. "\r\n" . "CustomerEmail: ".$CustomerEmail. "\r\n" . "CustomerTelephone: ".$CustomerTelephone. "\r\n" . "PickupLocation: ".$PickupLocation. "\r\n" . "AddressLine1: ".$AddressLine1. "\r\n" . "AddressLine2: ".$AddressLine2. "\r\n" . "TownCity: ".$TownCity. "\r\n" . "County: ".$County. "\r\n" . "Postcode: ".$Postcode. "\r\n" . "Destination: ".$Destination. "\r\n" . "PickupDate: ".$PickupDate. "\r\n" . "PickupTime: ".$PickupTime;
if ($qanswer==10)
{
mail($to,$subject,$message);
echo 'Thank You! Someone will be in contact shortly to confirm your booking';
}
else
{
echo 'Your booking failed to send! Please ensure you answered the anti-spam question correctly';
}
?>
</body>
</html>
我想做的是当表单成功发送时,而不是显示一个空白页面,其中包含“谢谢!”!稍后将有人与您联系以确认您的预订。我想重定向到一个名为thankyoupage.html的页面,该页面位于同一目录中。同样,如果失败,我希望它重定向到一个名为formsendfailure.html的页面。如果此页面仅用于发送邮件,请执行以下操作: 删除所有的HTML,这样就只剩下PHP内部标记了。 然后您就可以自由地使用标题“Location:url.php”;-问题可能是您已经发送了输出,在这些情况下,您无法设置标题。这是因为发送真实内容会迫使PHP按原样完成标题,而标题不能在内容之后发送。 然后,我会将成功/错误条件发送回查询字符串中,而不是使用echo。因此,如果一切顺利,您可以重定向到/your/url.php?result=ok,否则可以重定向到/your/url.php?result=error。在目标页面中,您需要检测到这一点,并根据需要呈现成功消息ok、失败消息error或nothing。 值得添加一个检查,以确保您实际处于post操作中-好奇的人或饥渴的搜索引擎可能仍会访问URL,并且您不想提供任何错误消息。
您可以在会话变量中执行最后一步,但这有点复杂,对于这个简单的需求来说可能有点多。如果此页面仅用于发送邮件,请执行以下操作: 删除所有的HTML,这样就只剩下PHP内部标记了。 然后您就可以自由地使用标题“Location:url.php”;-问题可能是您已经发送了输出,在这些情况下,您无法设置标题。这是因为发送真实内容会迫使PHP按原样完成标题,而标题不能在内容之后发送。 然后,我会将成功/错误条件发送回查询字符串中,而不是使用echo。因此,如果一切顺利,您可以重定向到/your/url.php?result=ok,否则可以重定向到/your/url.php?result=error。在目标页面中,您需要检测到这一点,并根据需要呈现成功消息ok、失败消息error或nothing。 值得添加一个检查,以确保您实际处于post操作中-好奇的人或饥渴的搜索引擎可能仍会访问URL,并且您不想提供任何错误消息。
您可以在会话变量中执行最后一步,但这有点复杂,对于这个简单的需求来说可能有点多。您必须将表单处理移到php文档的顶部。在php输出其他内容之前,必须发出标题重定向
目前,在第一次之前,您必须将表单处理移到php文档的顶部。在php输出其他内容之前,必须发出标题重定向
目前,在你的第一次之前的一切都和哈弗说的差不多。标头必须是您发送的第一个内容(在此之前不能输出任何其他内容),否则它将失败 最好是在if-else中设置一个值,如下所示:
if ($qanswer==10)
{
mail($to,$subject,$message);
$redirect = 0;
//echo 'Thank You! Someone will be in contact shortly to confirm your booking';
}
else
{
$redirect = 1;
//echo 'Your booking failed to send! Please ensure you answered the anti-spam question correctly';
}
然后在文档的顶部,第一件事应该是:
<?php
if($redirect==0){
header("Location: success.php");
}else{
header("Location: fail.php");
}
?>
然后让每个页面显示自己的信息,即“您的预订成功了”。与哈弗所说的差不多。标头必须是您发送的第一个内容(在此之前不能输出任何其他内容),否则它将失败 最好是在if-else中设置一个值,如下所示:
if ($qanswer==10)
{
mail($to,$subject,$message);
$redirect = 0;
//echo 'Thank You! Someone will be in contact shortly to confirm your booking';
}
else
{
$redirect = 1;
//echo 'Your booking failed to send! Please ensure you answered the anti-spam question correctly';
}
然后在文档的顶部,第一件事应该是:
<?php
if($redirect==0){
header("Location: success.php");
}else{
header("Location: fail.php");
}
?>
然后让每个页面显示自己的信息,即“您的预订成功了”。您已经给出了答案。可能重复您是否意识到这一点,如果失败,这就是原因。您已经给出了答案。可能重复您是否意识到这一点,如果失败,这就是原因。超级,我按照建议删除了所有的HTML,现在我可以将它直接指向我想要的页面。我不知道你在第二点上说了什么,但在移除所有东西后,用头替换echo,但似乎做到了。非常感谢!没问题。第二点基本上是,如果您已经将类似DOCTYPE的块的HTML发送到,那么发送头就太晚了。在您可能重定向的页面中,而不是在您将始终重定向的页面中
然后把PHP块放在文档的顶部,它就可以工作了。超级,我按照建议删除了所有HTML,现在我可以让它直接指向我想要的页面了。我不知道你在第二点上说了什么,但在移除所有东西后,用头替换echo,但似乎做到了。非常感谢!没问题。第二点基本上是,如果您已经将类似DOCTYPE的块的HTML发送到,那么发送头就太晚了。在您可能重定向到的页面中,而不是在这里,您将始终这样做,然后将PHP块放在文档的顶部,它就会工作。