发送电子邮件后的标题位置

时间:2014-07-02 12:08:12

标签: php

我正在尝试在提交表单后将用户重定向到感谢页面,但我的标题位置似乎不起作用(本地或在线)。单击提交按钮时没有任何反应(尽管发送了电子邮件)。

我的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开始)

4 个答案:

答案 0 :(得分:0)

问题是,您在重定向之前发送输出。

使用输出缓冲或在新页面上进行。

http://ee1.php.net/manual/en/ref.outcontrol.php

答案 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");

希望它有所帮助。