2014-04-05 17 views
0

這種形式的代碼將不會發送電子郵件...我無法讓我的聯繫形式發送

這是HTML表單:

<form method="post" action="index.php"> 
     <table class="form"> 
      <tr> 
       <th class="label"> 
        <label for="name">Name</label> 
       </th> 

       <td class="input"> 
        <input type="text" name="name" id="name"> 
       </td> 
      </tr> 

      <tr> 
       <th class="label"> 
        <label for="email">Email</label> 
       </th> 

       <td class="input"> 
        <input type="text" name="email" id="email"> 
       </td> 
      </tr> 

      <tr> 
       <th class="label"> 
        <label for="message">Message</label> 
       </th> 

       <td class="input"> 
        <textarea type="text" name="message" id="message"></textarea> 
       </td> 
      </tr> 
     </table> 

     <input type="submit" value="Send"> 
    </form> 

這裏是發送代碼:

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$message = $_POST["message"]; 
$email_body = ""; 

$email_body = $email_body . "Name: " . $name; 
$email_body = $email_body . "Email: " . $email; 
$email_body = $email_body . "Message: " . $message; 

mail("[email protected]" , "Contact Form" , $message , "From: $name"); 

header("Location: index.php?formsubmit=1"); 

exit; 
} 

?> 

我完全不知道什麼是錯的,它在以前工作過,但是在我嘗試向我的代碼中添加一些內容之後,比如說如果表單提交等於一個顯示謝謝聯繫我們而不是解釋表單。這應該沒有任何關係,但我不認爲...

難道這是事實,我添加了整個?formsubmit = 1的事情?

感謝您的任何幫助。

+2

第一步:[啓用錯誤報告](http://stackoverflow.com/a/6575502/1438393)。 –

+0

按照Amal的建議添加一些錯誤報告代碼,以便您知道錯誤發生的位置?! –

+0

我在哪裏可以找到? – Hunter

回答

0

如果您沒有在前面輸入任何可以輸出任何可見信息的代碼(例如echoprint_r...),請確保您只在中設置Location。理想的情況下,header應該在你的頁面的開始,在任何'打印'之前。

如PHP手冊說明:PHP: header - Manual

記住header()函數被髮送任何實際輸出之前,必須被調用,或者通過正常的HTML標記,在一個文件中的空行,或從PHP。使用include或require函數或其他文件訪問函數讀取代碼,並在調用header()之前輸出空格或空行是非常常見的錯誤。

一種常見的做法,但是,爲了驗證一個表單已提交的命名是你提交按鈕這樣的...

<input name="submit" type="submit" value="Send" /> 
<!-- I added the 'name' attribute here --> 

,並檢查它像這樣(在您的「發送」碼,當你把它叫做)...

if (isset($_POST['submit'])) { 
    // same index as the 'name' attribute above 
} 
0

我想通了我自己,

<form method="post" action="index.php?formsubmit=1"> 

正是我需要的,擺脫了

header("Location: index.php?formsubmit=1"); 

並堅持

<?php 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$message = $_POST["message"]; 
$email_body = ""; 

$email_body = $email_body . "Name: " . $name; 
$email_body = $email_body . "Email: " . $email; 
$email_body = $email_body . "Message: " . $message; 

mail("[email protected]" , "Contact Form" , $message , "From: $name"); 

exit; 
} 

?> 

在底部。

謝謝

+0

結帳在我的答案中的原因... – webeno

相關問題