2012-09-19 71 views
0

時,我已經搞清楚什麼是錯我的代碼不能正常工作。我一直收到$_POST無法正常工作。這是我的HTML代碼:

<form id="EmailForm" action="mailForm.php" method="post" 
    onsubmit="validateForm()" enctype="text/plain"> 
    <div> 
    Name: <input type="text" value="" name="name" size="30" /> 
    Email: <input type="text" value="" name="email" size="30" /> 
    Subject: <input type="text" value="" name="subject" size="60" /> 
    Message: <br /> 
    <textarea name="message" rows="5" cols="60"></textarea> 
    <input type="submit" value="Send" /> 
    </div> 
</form> 

這是我的mailForm.php代碼:

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$subject = $_POST['subject']; 
$mailsent = mail("[email protected]", "$subject", "$message\n\n$name\n$email", ""); 
if ($mailsent) { 
echo ("Your email has been sent. Thank you for using our mail form. <br />"); 
echo ("Name: ".$name."<br />"); 
echo ("Email: ".$email."<br />"); 
echo ("Subject: ".$subject."<br />"); 
echo ("Message: ".$message); 
} 
?> 

到目前爲止,我可以得到電子郵件發送,但所有電子郵件都是空的。名稱或電子郵件沒有顯示,但是從Web託管服務變爲默認名稱。沒有名字,沒有電子郵件,沒有主題,沒有消息。在mailForm.php,我只拿到了以下內容:

Your email has been sent. Thank you for using our mail form. 
Name: 
Email: 
Subject: 
Message: 

我試過echo $_POST["name"]; echo $_POST["email"]但得到的空白頁。

+0

您的代碼容易遭受標頭中毒,並且您一旦生活就可能最終被用來發送垃圾郵件 –

+0

@WebnetMobile:我預處理標題字段並檢查中的垃圾郵件PHP文件,我只是沒有把它放在這個論壇上,因爲它與我的問題沒有關係。無論如何,thx的單挑。 – mline86

回答

1

只需卸下enctype="text/plain"

<form id="EmailForm" action="mailForm.php" method="post" onsubmit="validateForm()"> 

有效值在PHP中的加密類型在<form>標籤是:

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

謝謝,它沒有enctype的工作。 – mline86

1

你不應該在這種情況下,您的<form>標籤使用enctype="text/plain" ...

PHP將不會顯示在您的$_POST表單元素,如果你使用這些代碼。

php有一個名爲$HTTP_RAW_POST_DATA的變量,它將使用enctype="text/plain"作爲簡單字符串存儲您的發佈數據。

所以在HTML代碼的<form>標籤應該是這樣的:

<form id="EmailForm" action="mailForm.php" method="post" onsubmit="validateForm()"> 

有效enctype<form>標籤值是:

應用程序/ x-WWW窗體-urlencoded:默認。所有字符被編碼發送之前(空格被轉換爲「+」符號和特殊字符被轉換成ASCII的十六進制值)

的multipart/form-data的:空格被轉換爲「+」符號,但沒有特別的字符被編碼沒有字符被編碼。此值時,使用的是有一個文件上傳控制

文本/純形式需要:空格被轉換爲「+」符號,但沒有特殊的字符被編碼

text/plain其他2種方法將以$ _POST的陣列形式提供...