Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在呈现了一些HTML之后,如何重定向PHP?_Php - Fatal编程技术网

在呈现了一些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

我知道以前有人问过这个问题,人们会用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 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块放在文档的顶部,它就会工作。