2013-11-25 70 views
0

我發現一個很好的html郵件webform在線感謝CSS技巧的人,一切似乎工作正常。該表單使用PHP作爲安裝在Apache上的模塊。在表格中,我要求用戶的姓名,電子郵件地址和評論。除用戶名外的所有內容都到達我的郵箱。我似乎無法找到這不起作用的原因。這是我的HTML代碼:

<div id="form_container"> 
     <form method="post" name="contact_form" action="contactengine.php"> 
      <table> 
      <tr> 
      <td class="description-column"> 
       <label class="description" for="Name">Name </label> 
      </td> 
      <td> 
      <span><input id="Name" type="text" maxlength="455" value=""/ size="41></span> 
      </td> 
      </tr> 

      <tr> 
      <td class="description-column"> 
       <label class="description" for="Email">Email </label> 
      </td> 
      <td> 
      <span><input id="Email" name="Email" type="text" maxlength="455" value=""/ size="41"> 
      </span> 
      </td> 
      </tr> 

      <tr> 
       <td class="description-column"> 
       <label class="description last" for="Message">Message </label> 
      </td> 
      <td> 
      <span> 
       <textarea id="Message" class="comment-box" name="Message" maxlength="455">          
       </textarea> 
      </span> 
      </td> 
      </tr> 

      <tr colspan="2"> 
      <td></td> 
      <td class="buttons"> 
      <input type="hidden" name="form_id" value="" /> 
      <input type="submit" name="submit" value="Submit" class="submit-button" /> 
      </td> 
      </tr> 
     </table> 
     </form> 
    </div> 

這是PHP代碼:

<?php 

$EmailFrom = "[email protected];" 
$EmailTo = "[email protected]"; 
$Subject = "Mail"; 
$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Message = Trim(stripslashes($_POST['Message'])); 

// validation 
$validationOK=true; 
if (!$validationOK) { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">"; 
    exit; 
} 

// prepare email body text 
$Body = ""; 
$Body .= "Name: "; 
$Body .= $Name; 
$Body .= "\n"; 
$Body .= "Email: "; 
$Body .= $Email; 
$Body .= "\n"; 
$Body .= "Message: "; 
$Body .= $Message; 
$Body .= "\n"; 

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>"); 

// redirect to success page 
if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">"; 
} 
else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.htm\">"; 
} 
?> 

我假設下的PHP代碼//發送郵件會插入用戶進入郵箱的一切,發送到我的郵箱。這意味着它將在$ Body下輸入所有數據,其中包括$ Name。但它永遠不會給我起名字。 我也想知道爲什麼在第一個字段「$ EmailFrom」中,我應該輸入一個固定的電子郵件地址(在這種情況下是'[email protected]'),而用戶在html表單中輸入他的地址並在郵件中發送我收到。 $ EmailFrom字段僅供我查看誰發送了郵件而無需打開郵件。它也應該是用戶的郵件地址或用戶的名字。

我希望自己明白了嗎?

在此先感謝,我已經找到了許多有價值的答案在本網站關於其他主題:)

B帶name屬性

+0

'stripslashes'?爲什麼?你是否在啓用Magic Quotes的過時服務器上停留,或者你是否想要中斷用戶輸入? – Quentin

+0

你爲什麼用'meta'而不是'Location' HTTP頭重定向人? – Quentin

+0

我在2007年通過在線教程發現了此表單,因此我假設某些功能可能會被棄用。但只是要通知,我可以刪除反斜槓,如果是的話,我會怎麼做? –

回答

1

只有表單控件能成功。你沒有。

<input id="Name" type="text" maxlength="455" value=""/ size="41> 

應該

<input id="Name" name="Name" type="text" maxlength="455" value="" size="41"> 
+0

我顯然忽略了這一點,非常感謝! –

0

你忘記了除了設置name="Name"id="Name";)

0

您應該添加name屬性爲輸入標籤,

<input id="Name" name="Name" type="text" maxlength="455" value="" size="41>

1

你忘了把name屬性輸入標籤

<td> 
<span><input id="Name" type="text" maxlength="455" value="" size="41></span> 
</td> 

變化

<td> 
<span><input id="Name" type="text" name="Name" maxlength="455" value="" size="41></span> 
</td>