PHP标头位置无法按预期工作

时间:2012-10-14 13:01:23

标签: html html-form php

我正在使用PHP脚本通过电子邮件发送表单的内容。我希望脚本在发送电子邮件后重定向到另一个html页面,但它似乎无法正常工作。这就是我所拥有的:

<?php
    // Email to...
    $email_to = "xyz@someDomain.co.uk";

    // Get the form components
    $name = $_GET['name'];
    $email_from = $_GET['email'];
    $email_subject = $_GET['message-subject'];
    $message = $_GET['message'];

    // Create the message
    $email_message = $message . "\n\n" . $name;

    // Create email headers
    $headers =  'From: ' . $email_from."\r\n".
            'Reply-To: ' . $email_from."\r\n".
            'X-Mailer: PHP/' . phpversion().
            'Location: Message-Recieved.html';

    // Send the email
    @mail($email_to, $email_subject, $email_message, $headers);
?>

请有人建议为什么这不起作用?

4 个答案:

答案 0 :(得分:6)

这种情况下的标题是电子邮件标题,而不是服务器标题。

试试这样:

<?php
    ....

    // Create email headers
    $headers =  'From: ' . $email_from."\r\n".
            'Reply-To: ' . $email_from."\r\n".
            'X-Mailer: PHP/' . phpversion();

    // Send the email
    if ( @mail($email_to, $email_subject, $email_message, $headers) ) {
        header('location: http://yoursite.com/Message-Recieved.html');
    }
?>

答案 1 :(得分:2)

您正在尝试添加

Location: Message-Received.html

mail headers列表,并且不支持标题。不过它是HTTP header,您可以通过Header()发送:

 Header( 'Location: Message-Received.html');

根据RFC 2616wikipedia也有一些信息)Location

  

需要一个完整的绝对URI来重定向最流行的   Web浏览器允许传递相对URL作为a的值   位置标题。

因此,您应该使用完整路径(以http://开头)作为参数。

答案 2 :(得分:1)

这是因为你没有正确调用标题

使用

header('Location: Message-Recieved.html');
mail()

之后

@mail($email_to, $email_subject, $email_message, $headers);

header('Location: http://yourproject.com/Message-Recieved.html');

答案 3 :(得分:0)

您似乎是在电子邮件上设置标题,而不是在网页上。从Loction变量中移除$headers标题,然后将其置于header()调用中。