-1

我已经成功地将以下表单提交代码集成到我的网站中,并且效果很好。但是,如果表单提交成功,我希望代码将用户重定向到一个页面,如果提交失败,则将用户重定向到另一个页面。我如何调整以下代码来做到这一点?真的开始让我紧张了!:-P

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];
$formcontent=" From: $name \n Phone: $phone \n Message: $enquiry";
$recipient = "email@email.co.uk";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
?>

编辑:

好的,我已将代码更改为:

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$enquiry = $_POST['enquiry'];
$formcontent=" From: $name \n Phone: $phone \n Message: $enquiry";
$recipient = "email@email.co.uk";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
if(mail($recipient, $subject, $formcontent, $mailheader)){
header("Location: mailer-success.htm");
}else{
header("Location: mailer-fail.htm");
}
exit;
?>

这有效,但是它永远不会进入失败页面。我猜这是因为即使字段为空,电子邮件也会始终发送。我有 jquery 验证(出于测试目的我已禁用),但这显然只适用于启用了 javascript 的用户。如果表单字段包含数据,我如何更改代码以仅显示成功页面?任何帮助表示赞赏。

4

6 回答 6

7

向页面添加重定向:

// Test to see if variables are empty:
if(!empty($name) && !empty($email) && !empty($phone) && !empty($enquiry)){
    // Test to see if the mail sends successfully:
    if(mail($recipient, $subject, $formcontent, $mailheader)){
        header("Location: success.php");
    }else{
        header("Location: error.php");
    }
}else{
    header("Location: back_to_form.php");
}
于 2013-05-29T15:41:37.157 回答
3

邮件函数在成功/失败时返回真/假。所以这很简单:

if (mail($recipient, $subject, $formcontent, $mailheader)) {
    header('location: success.php');
} else {
    header('location: fail.php');
}
于 2013-05-29T15:41:51.083 回答
2

添加

header("Location: successpage.html");

到代码的底部并删除echo "Thank you!";

于 2013-05-29T15:41:25.267 回答
1

摆脱回声,然后使用标题:

header("Location: success.php");

如果失败,重定向到error.php

header("Location: error.php");

如果您想转到表单所在的页面,但显示错误或成功消息,请执行以下操作:

header("Location: original.php?status=error")

或者如果合适的话将错误更改为成功,然后您可以使用$_GET['status']来确定表单是否失败/成功。

于 2013-05-29T15:42:18.223 回答
1

与其向客户端发送重定向,从而导致对您的 Web 服务器的另一个调用,我相信这样做的更好方法是使用 PHP 包含。

if (mail($recipient, $subject, $formcontent, $mailheader))
    include 'success.php';
else
    include 'fail.php';
于 2013-05-29T15:49:42.073 回答
0
如果(失败){
  header("位置:成功.php");
  出口;
}否则如果(成功){
  回声“谢谢”;
}
于 2013-05-29T15:43:18.510 回答