PHP联系人表单在提交时返回错误


PHP Contact Form returning error upon submission

所以我试着在2个不同的服务器上发布一个PHP联系表单页面,我不能让它们中的任何一个都完美地工作。

服务器1

:
在提交时返回500 internal error页面。
我联系了网络支持,他们回复说我有一个:

从脚本'index.php':错误的头:

index.php的代码如下:

    <?php
 if(isset($_POST['submit']))
 {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $query = $_POST['message'];
    $email_from = $name.'<'.$email.'>';
 $to="testemail@email.com";
 $subject="test subject";
 $headers  = 'MIME-Version: 1.0' . "'r'n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "'r'n";
 $headers .= "From: ".$email_from."'r'n";
 $message="   
         Name:
         $name     
         <br>
         Email:
         $email        
         <br>
         Message:
         $query        
   ";
    if(mail($to,$subject,$message,$headers))
        header("Location:../contact.php?msg=Successful Submission!<br />
 Thank you for contacting us.");
    else
        header("Location:../contact.php?msg=Error To send Email !");
 }
?>

服务器2:
链接我到我的"感谢页面"正确,但它显示"发送电子邮件出错!"而不是"成功提交!"

任何帮助或建议将不胜感激!

我认为问题出在这部分:

 if(mail($to,$subject,$message,$headers))
        header("Location:../contact.php?msg=Successful Submission!<br />
 Thank you for contacting us.");
    else
        header("Location:../contact.php?msg=Error To send Email !");

特别是在header();

  1. 每个空格将转换为%20,因为没有带空格的url;
  2. 没有像<,>, !在url
  3. <br />中的"/"表示一个名为">Thank you for contact us"的文件。

查看:http://www.w3schools.com/tags/ref_urlencode.asp;

还将exit();放在每个头之后,以防止进一步执行脚本

问题似乎是标头位置重定向调用应该提供一个完整的url,例如:

header("Location: http://www.example.com");

相对url是根据浏览器的最大努力处理的,你的浏览器显然不喜欢…/,因此有"坏头文件"的抱怨。

这是在php.net页面上根据官方URL规范标注的