2013-08-18 221 views
0

我有一個簡單的聯繫人腳本,它會在提交時觸發一封電子郵件。 電子郵件已發送,但電子郵件中沒有表單值(名稱:空,...)。

爲什麼我的聯繫人腳本不工作?

<?php 
    if ($action == "send") //isset wyslij 
    { 
     if (!$_POST[name] || !$_POST[email] || !$_POST[phone] || !$_POST[enquiry]) 
     { 
      $problem = TRUE; 
      echo("<p>You have to fill all form.</p>"); 
     }  

     if (! $problem) 
     { 
      $data = date("d.m.y"); 
      $message = " 
       <p>Name: $_POST[name]</p> 
       <p>Phone: $_POST[phone]</p> 
       <p>Email: $_POST[email]</p> 
       <br> 
       <p>Enquiry: $_POST[enquiry]</p>"; 
      $od = "[email protected]"; 
      $content = $message; 

      $header = "From: $od \r\n"; 
      $header .= 'MIME-Version: 1.0' . "\r\n"; 
      $header .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; 

      (mail('[email protected]', 'New message from website', $content, $header)); 

      echo("<br><p>Message has been sent.</p>"); 
     } 
     else 
     { 
      echo("<p>Try <a href=contact.php>again</a></p>"); 
     } 
    } 
?> 
<form action="contact.php?action=send" method="post" enctype="text/plain"> 
    <label for="name">Name</label><input type="text" name="name" /></br></br> 
    <label for="email">Email</label><input type="text" name="email" /></br></br> 
    <label for="phone">Phone</label><input type="text" name="phone" /></br></br> 
    <label for="enquiry">Enquiry</label><textarea name="enquiry" cols="20" rows="10"></textarea></br></br> 
    <input type="submit" id="contact_button" value="Send" /> 
</form> 
+0

儘量不要在qoute「

名稱:」中包含數組值。 $ _POST [name]。「

」; –

回答

2

在標籤enctype有效值是:

application/x-www-form-urlencoded 
multipart/form-data 

你有text/plain而這就是爲什麼它不工作。

+0

'text/plain' *是一個有效的值,但[它說](http://www.w3.org/TR/html5/forms.html#text/plain-encoding-algorithm):*有效載荷使用文本/純文本格式旨在爲人類可讀。它們不能被計算機可靠解釋* – Quentin

+0

是的,「text/plain」對HTML有效,但它不適用於PHP - 它不會解碼發送的數據並使用該enctype填充「$ _POST」。 – Sven

0

只需從HTML表單代碼中刪除「enctype」參數,然後重試?