2015-05-09 164 views
0

我是新手,剛剛開始學習。我還沒有學習PHP和JavaScript/JQuery,所以我在我的網站上遇到了我的聯繫表單問題。聯繫表格和PHP

JavaScript似乎正在工作,但PHP的行動不是。這是我從網上取得的開放腳本,所以我確定這些動作缺少一些代碼,因爲我不知道我在看什麼,所以我完全失去了知識。任何幫助將是驚人的。

<!-- FORM --> 
    <form id="form" form role="form" action="contact_form.php" method="post"> 
    <p id="returnmessage"></p> 
    <br/> 
     <label>Name: <span>*</span></label> 
    <br/> 
    <input type="text" id="name" placeholder="Name"/><br/> 
    <br/> 
    <label>Email: <span>*</span></label> 
    <br/> 
    <input type="text" id="email" placeholder="Email"/><br/> 

    <br/>  
          <textarea id="message" placeholder="Message......."></textarea><br/> 
    <br/> 
    <input type="button" id="submit" value="Send"/> 
          <br/> 
      </form> 

PHP

<?php 
//Fetching Values from URL 
$name = $_POST['name1']; 
$email = $_POST['email1']; 
$message = $_POST['message1']; 
$contact = $_POST['contact1']; 
//sanitizing email 
$email = filter_var($email, FILTER_SANITIZE_EMAIL); 
//After sanitization Validation is performed 
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 
if (!preg_match("/^[0-9]{10}$/", $contact)) { 
echo "<span>* Please Fill Valid Contact No. *</span>"; 
} else { 
$subject = $name; 
// To send HTML mail, the Content-type header must be set 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From:' . $email. "\r\n"; // Sender's Email 
$headers .= 'Cc:' . $email. "\r\n"; // Carbon copy to Sender 
$template = '<div style="padding:50px; color:white;">Hello ' . $name .  ',<br/>' 
. '<br/>Thank you...! For Contacting Us.<br/><br/>' 
. 'Name:' . $name . '<br/>' 
. 'Email:' . $email . '<br/>' 
. 'Contact No:' . $contact . '<br/>' 
. 'Message:' . $message . '<br/><br/>' 
. 'This is a Contact Confirmation mail.' 
. '<br/>' 
. 'We Will contact You as soon as possible .</div>'; 
$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">"  . $template . "</div>"; 
// message lines should not exceed 70 characters (PHP rule), so wrap it 
$sendmessage = wordwrap($sendmessage, 70); 

// Send mail by PHP Mail Function 
mail([email protected], $subject, $sendmessage, $headers); 
echo "Your Query has been received, We will contact you soon."; 
} 
} else { 
echo "<span>* invalid email *</span>"; 
} 

JAVASCRIPT

$(document).ready(function(){ 
$("#submit").click(function(){ 
var name = $("#name").val(); 
var email = $("#email").val(); 
var message = $("#message").val(); 
var contact = $("#contact").val(); 

$("#returnmessage").empty(); //To empty previous error/success message. 
//checking for blank fields 
if(name==''||email==''||contact=='') 
{ 
alert("Please Fill Required Fields"); 
} 
else{ 
// Returns successful data submission message when the entered information is stored in database. 
$.post("contact_form.php",{ name1: name, email1: email, message1:message, contact1: contact}, 
function(data) { 
      $("#returnmessage").append(data);//Append returned message to message paragraph 
       if(data=="Your Query has been received, We will contact you soon."){ 
        $("#form")[0].reset();//To reset form fields on success 
       } 
     }); 
    } 

}); 
}); 
+0

在打開PHP標記 (例如'<?php error_reporting(E_ALL);)後立即向文件頂部添加錯誤報告。 ini_set('display_errors',1);'然後你的代碼的其餘部分,看看它是否產生任何東西,並檢查你的控制檯。 –

+0

'$ sendmessage'你沒有連接,只考慮最後一個變量。你也應該查閱郵件手冊http://php.net/manual/en/function.mail.php - 你的第一個參數是不正確的。您還需要確保所有輸入都已填充,而不是留空。作爲名稱的主題可能會失敗,如果沒有填寫。 –

回答

2

你的第一個問題是你沒有命名你的html表單中的任何變量。 PHP需要這些才能夠處理這些信息。例如:

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

需要有一個名稱字段(不僅僅是id,類型和佔位符)。這裏是它應該看起來如何匹配你的PHP腳本中的post變量:

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

你應該對其餘的HTML輸入做這個。確保它們與POST表單中的變量相匹配(這是PHP腳本中名爲$_POST['']的變量)這將解決您的第一個問題。另外,正如在註釋中提到的那樣,特別是在開發代碼時,將錯誤報告放在代碼的頂部以捕捉任何問題是一個非常好的主意。如果你把這個在你的代碼的頂部,你可以得到一些非常信息的錯誤:

<?php error_reporting(E_ALL); ini_set('display_errors', 1); ?> 

注意,它也可能是一個好主意,保存的電子郵件地址中的變量,而不是硬編碼。

至於sendmessage變量,您需要像這樣連接變量(如上面的註釋中所述),否則第二個變量將覆蓋第二個變量。 (注意.只是=第二行之前)

$sendmessage = "<div style=\"background-color:#7E7E7E; color:white;\">"  . $template . "</div>"; 

$sendmessage .= wordwrap($sendmessage, 70); 

但是,您可能希望把它清理乾淨一點只是爲了確保它的工作原理。在星形嘗試將兩個項目連接成一個變量之前,只需在一個變量中將其作爲純文本消息來嘗試。它應該發送通過罰款,然後你可以擔心後面的格式,一旦你瞭解它是如何工作的。

我推薦閱讀一些教程(http://w3schools.com對學習非常有用),但是你正在做的這類事情是一個很好的開始。如果遇到更多麻煩,嘗試將代碼剝離到最低限度(例如,從電子郵件中刪除HTML片段;只需將它以純文本格式發送,以確保其正常工作,然後將其重新放入,然後移除正則表達式檢查和javascript,直到你有了表單的工作,然後一點一滴地添加這些作品。這樣你就可以更好地理解這些作品是如何工作的)。

+0

中擁有的內容,在我的問題中討論的OP代碼中存在很多問題。其中一些將增加其失敗。任何人給出的答案都沒有解決這些問題。 –

+0

非常好的點數@ Fred-ii-(和往常一樣)。我已經清理了一下,並添加了一些解釋。 – nomistic

+1

對,*歡呼* –

0

變化

$name = $_POST['name1']; $email = $_POST['email1']; $message = $_POST['message1']; $contact = $_POST['contact1'];

$name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; $contact = $_POST['contact'];

並給name屬性(名稱= 「姓名」,名字= 「電子郵件」。)到每個輸入端。

這將是工作。

+2

她沒有理由改變兩者。她可以在表單中創建名稱屬性以匹配她已經在PHP post變量 – nomistic