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

时间:2015-06-08 14:34:38

标签: php html forms contact

所以我尝试在两个不同的服务器上发布一个带有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:
将我链接到我的&#34;感谢您的页面&#34;正确,但它显示 &#34;错误发送电子邮件!&#34;代替 &#34;成功提交!&#34;

非常感谢任何帮助或建议!

2 个答案:

答案 0 :(得分:1)

问题似乎是标题位置重定向调用,它应提供完整的URL,例如:

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

根据浏览器的最佳努力处理相关网址,您的浏览器显然不喜欢../,因此“糟糕标题”投诉。

根据php.netofficial URL spec页面会在FromBody页面上注明。

答案 1 :(得分:1)

我认为问题出在这一部分:

 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;
  2. 没有像&lt;,&gt;这样的特殊字符!在网址
  3. &#34; /&#34;在<br />中会建议一个名为&#34;&gt;的文件。感谢您与我们联系。&#34;
  4. 退房:http://www.w3schools.com/tags/ref_urlencode.asp;

    还在每个标题后加exit();以防止进一步执行脚本