在我的PHP代码中,我试图使它在用户成功发送电子邮件后,它重定向回联系人页面,然后显示一个弹出框通知用户电子邮件已成功发送:然而,程序只运行顶部行,而不运行弹出框代码。我该如何解决这个问题?
<? php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: #';
$to = '#';
$subject = 'Customer Message - Online Form';
$body = "From: ".$name.
"'r'n E-Mail: ".$email.
"'r'n Message: 'r'n".$message;
if (isset($_POST['submit'])) {
if (mail($to, $subject, $body, $from)) {
header('Location: http://www.google.com.au');
echo "<script>alert('Message successfully sent.');</script>";
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
}
?>
在打印警告之前,通过设置标题来重定向。尝试在JS中重定向。
<? php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: #';
$to = '#';
$subject = 'Customer Message - Online Form';
$body = "From: ".$name.
"'r'n E-Mail: ".$email.
"'r'n Message: 'r'n".$message;
if (isset($_POST['submit'])) {
if (mail($to, $subject, $body, $from)) {
echo "<script>alert('Message successfully sent.'); window.location='http://www.google.com.au'</script>";
//header('Location: http://www.google.com.au');
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
}
?>
注意
这将在切换页面之前引起JS警报。如果你想在你登陆的页面上进行修改你需要发送$_POST或$_GET变量并在你登陆的页面
你不可能将用户从页面上重定向,而期望页面仍然向用户显示一些内容。
如果你想在不同的页面上显示消息,而不是将其存储在session中,然后在另一个页面上检查是否有东西存储在session中并显示
你正在使用你的头重定向,如果你尝试先回显,然后使用头重定向,你会得到一个错误,说头已经设置好了。
你可以添加重定向到你的前端,通过返回其他东西,如
if (isset($_POST['submit'])) {
if (mail($to, $subject, $body, $from)) {
echo '<script>
alert("Message successfully sent.");
location.href="http://www.google.com.au";
</script>';
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
}
在执行
位置重定向应该等待警报被解除。