我正在尝试在提交表单后将用户重定向到感谢页面,但我的标题位置似乎不起作用(本地或在线)。单击提交按钮时没有任何反应(尽管发送了电子邮件)。
我的php看起来像这样:
<?php
$val= $_POST['val'];
$toemail='mail@mail.com';
$name = $val['name'];
$societe = $val['societe'];
$email = $val['email'];
$phone = $val['phone'];
$msg = $val['msg'];
$subject = 'Contact';
$headers = "From: $email \r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=utf-8\r\n";
$message = "<b>Nom : </b>".$name."<br>";
$message .='<b>Societe : </b>'.$societe."<br>";
$message .='<b>Email : </b>'.$email."<br>";
$message .='<b>Telephone : </b>'.$phone."<br>";
$message .='<b>Message : </b>'.$msg;
mail($toemail, $subject, $message, $headers);
header("Location: http://example.com/thankyou.html");
?>
我做错了什么?在此先感谢您的帮助。
编辑:谢谢你的帮助。如果我转向错误报告,我得到: 警告:无法修改标头信息 - 已经发送的标头(输出从/path/email.php:12开始)
答案 0 :(得分:0)
答案 1 :(得分:0)
正如其他人所提到的,脚本在尝试发送标头之前发送输出。
修复它的最简单方法可能是缓冲email()
的输出,然后发送标题,如下所示:
ob_start();
mail($toemail, $subject, $message, $headers);
ob_end_clean();
header("Location: http://example.com/thankyou.html");
答案 2 :(得分:0)
使用以下方法非常简单
ob_start();
exit(header("Location: http://example.com/thankyou.html"));
必须在进行任何输出之前调用发送/修改HTTP标头的函数。否则呼叫失败。
答案 3 :(得分:-4)
使用header()
,您只能重定向到同一网站中的网页。
您可以尝试使用
header("Location: /thankyou.html");
希望它有所帮助。