2016-03-05 86 views
1

我一直在使用模板最近建立一個網站,一切都一直很好......除了電子郵件腳本變量每次都是空白的。此模板的簡單電子郵件表格不起作用

形式:

<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> 
    <div class="form-group"> 
     <input type="text" name="name" class="form-control" required="required" placeholder="Name"> 
    </div> 
    <div class="form-group"> 
     <input type="email" name="email" class="form-control" required="required" placeholder="Email Id"> 
    </div> 
    <div class="form-group"> 
     <textarea name="message" id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea> 
    </div>       
    <div class="form-group"> 
     <input type="submit" name="submit" class="btn btn-submit" value="Submit"> 
    </div> 
</form> 

動作(sendemail.php):

<?php 
    $name  = @trim(stripslashes($_POST['name'])); 
    $from  = @trim(stripslashes($_POST['email'])); 
    $subject = @trim(stripslashes($_POST['subject'])); 
    $message = @trim(stripslashes($_POST['message'])); 
    $to  = '[email protected]'; 

    $headers = "MIME-Version: 1.0"."\r\n"; 
    $headers .= "Content-type: text/plain; charset=iso-8859-1"."\r\n"; 
    $headers .= "From: ".$name." <".$from.">"."\r\n"; 
    $headers .= "Reply-To: <".$from.">"."\r\n"; 
    $headers .= "Subject: ".$subject."\r\n"; 
    $headers .= "X-Mailer: PHP/".phpversion(); 

    mail($to, $subject, $message, $headers); 
    die; 
?> 

jQuery的:

// Contact form 
var form = $('#main-contact-form'); 
form.submit(function(event){ 
    event.preventDefault(); 
    var form_status = $('<div class="form_status"></div>'); 
    $.ajax({ 
     type: "POST", 
     url: $(this).attr('action'), 
     beforeSend: function(){ 
      form.prepend(form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn()); 
     } 
    }).done(function(data){ 
     form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut(); 
    }); 
}); 

難道你們有什麼見解?通常我不會惹惱jQuery。

+0

'郵件()'需要一個郵件服務器來發送電子郵件。也許PHPMailer是一個更好的選擇。有了它,你實際上可以驗證電子郵件是否被髮送。 – Xorifelse

+0

我只注意到'$ headers'是一個數組。我相信這應該是一個字符串。要搗鼓。如果可行,可以刪除我的問題。 – jdstankosky

+0

是的,應該是一個字符串。 'join('\ r \ n',$ headers)'另外,檢查$ _POST []變量是否爲空是個好主意。機器人可能會跟着鏈接發送空的郵件請求,導致空的郵件,甚至可能添加驗證碼 – Xorifelse

回答

1

對於PHP:

$headers = [ // or array(for older PHP versions. 
"MIME-Version: 1.0", 
"Content-type: text/plain; charset=iso-8859-1", 
"From: $name <$from>", 
"Reply-To: <$from>", 
"Subject: $subject", 
"X-Mailer: PHP/".phpversion() 
]; 

mail($to, $subject, $message, join('\r\n', $headers)); 

爲JavaScript:

$.ajax({ 
    type: "POST", 
    url: $(this).attr('action'), 
    data: { 
     name: $('#name').val(), 
     email: $('#email').val(), 
     subject: $('#subject').val(), 
     message: $('#message').val() 
    }, 
}).done(function(data){ 
    form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut(); 
}); 

對於HTML

<form id="main-contact-form" name="contact-form" method="post" action="sendemail.php"> 
    <div class="form-group"> 
     <input type="text" id="name" class="form-control" required="required" placeholder="Name"></input> 
    </div> 
    <div class="form-group"> 
     <input type="email" id="email" class="form-control" required="required" placeholder="Email Id"></input> 
    </div> 
    <div class="form-group"> 
     <input type="text" id="subject" class="form-control" required="required" placeholder="Subject"></input> 
    </div> 
    <div class="form-group"> 
     <textarea id="message" required="required" class="form-control" rows="8" placeholder="Your text here"></textarea> 
    </div>       
    <div class="form-group"> 
     <input type="submit" name="submit" class="btn btn-submit" value="Submit"></input> 
    </div> 
</form> 
+0

好的。事情的組合是錯誤的,我的東西。以下是我所做的解決所有問題的方法。隨意編輯你的答案來反映它。 a)爲主題行添加了一個輸入。 b)給每個輸入一個'id ='。 c)使用'$('#name').val()'等等。另外,作爲一個附註,''標籤不需要關閉,但是對於xhtml嚴格,它們是自我關閉的'' – jdstankosky

+0

好吧,即使jquery'「input [name ='name']」'可以是有效的。我建議將它更新爲HTML 5,因爲根據我的經驗,XHTML是不值得的。從它更新也是一個痛苦的原因在任何其他HTML版本''可能會導致意想不到的行爲。 – Xorifelse