2013-08-05 72 views
0

我有一個HTML-PHP混合的聯繫表單。PHP表單不會將提交的數據發送到電子郵件

PHP腳本旨在將表單數據發送到電子郵件地址,但它僅發送元素標識並且不附加提交的值。

下面是我使用的代碼:

<?php 
$ToEmail = '[email protected]'; 
$EmailSubject = 'Site contact form'; 
$mailheader = "From: ".$_POST["email"]."\r\n"; 
$mailheader .= "Reply-To: ".$_POST["email"]."\r\n"; 
$mailheader .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
$MESSAGE_BODY = "Name: ".$_POST["name"].""; 
$MESSAGE_BODY .= "Email: ".$_POST["email"].""; 
$MESSAGE_BODY .= "Subject: ".$_POST["subject"].""; 
$MESSAGE_BODY .= "Comment: ".nl2br($_POST["comment"]).""; 
mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Failure"); 
?> 

          <form class="form-horizontal" name="contactform" action="contact.php" method="post"> 
            <div class="control-group"> 
            <label class="control-label" for="name">Name*</label> 
            <div class="controls"> 
             <input type="text" id="name" placeholder="Name"> 
            </div> 
            </div> 
            <div class="control-group"> 
            <label class="control-label" for="email">Email*</label> 
            <div class="controls"> 
             <input type="text" id="email" placeholder="Email"> 
            </div> 
            </div> 
            <div class="control-group"> 
            <label class="control-label" for="subject">Subject*</label> 
            <div class="controls"> 
             <input type="text" id="subject" placeholder="Subject"> 
            </div> 
            </div> 
            <div class="control-group"> 
            <label class="control-label" for="comment">Message*</label> 
            <div class="controls"> 

             <textarea rows="4" id="comment" placeholder="Type your message here..."></textarea> 
            </div> 
            </div> 
            <div class="control-group"> 
            <div class="controls"> 
             <p> *Required fields</p> 
             <button type="submit" name="submit" class="btn">Submit</button> 
            </div> 
            </div> 
          </form> 
+0

那麼收到的電子郵件的內容是什麼? – JohnnyFaldo

+0

嗨,我的名字是Bobby Injection,我的電子郵件地址是'[email protected] \ r \ n頭部:注射' – PeeHaa

回答

4

你的投入都缺少name屬性,這是通過post發送到服務器。

<input type="text" id="email" placeholder="Email" name="email">

您將訪問與$_POST['email']

變量,我建議你抓住一個現成的,現成的庫來處理這個喜歡http://swiftmailer.org/

1

您可以測試你的表單變量,以及使用:

print_r($_POST); 

顯然你會想把它放到某種後的檢查,如:

if($_POST) 
{ 
    print_r($_POST); 
} 
0

由於user2023 ...已經說了,你的輸入形式缺少name屬性。

更改線路:

<input type="text" id="name" name="name" placeholder="Name"> 
<input type="text" id="email" name="email" placeholder="Email"> 
<input type="text" id="subject" name="subject" placeholder="Subject"> 
<textarea rows="4" id="comment" name="comment" placeholder="Type your message here..."></textarea> 

,然後在表格處理腳本,你可以這樣做:

if(isset($_POST['submit'])) { //checking if the form was submitted 

print_r($_POST); //this would give you all the submitted fields 

$name = $_POST["name"]; 
$email = $_POST["email"]; 
//and so on... 

} 
0

輸入通過POST給予或由標識形式GET HTML中給出的屬性,而不是ID。所以,你應該給

<input type="text" name="name" placeholder="Name" /> 

在你的HTML,並使用$_POST["name"]在處理代碼訪問值。

另外,我覺得您使用的是相同的文件,contact.php,對於用於顯示形式的代碼,用於處理表單輸入的PHP代碼。這是好的,但在這種情況下,您需要在您的PHP代碼中使用

if (isset ($_POST ["submit"]) { 
    /* code to process input from user */ 
} 

(否則在首次顯示錶單時無法正常工作)。

相關問題