2015-02-05 78 views
0

我已將聯繫表單添加到我的網站。表格發出電子郵件,但我沒有收到信息。所有的領域都是空白的。另外,我想讓所需的字段。任何人?HTML5,CSS3,PHP聯繫表格不發送信息+添加必填字段

這裏的PHP

<?php 
$field_name = $_POST['Name...']; 
$field_email = $_POST['Email...']; 
$field_phone = $_POST['Phone...']; 
$field_company = $_POST['Company']; 
$field_message = $_POST['Message...']; 

$mail_to = '[email protected]'; 
$subject = '#Message from Website# '.$field_name; 

$body_message .= 'From: '.$field_name."\n"; 
$body_message .= 'Email: '.$field_email."\n"; 
$body_message .= 'Phone: '.$field_phone."\n"; 
$body_message .= 'Company: '.$field_company."\n"; 
$body_message .= 'Message: '.$field_message."\n"; 

$headers = 'From: '.$E-Mail."\r\n"; 
$headers .= 'Reply-To: '.$E-Mail."\r\n"; 

$mail_status = mail($mail_to, $subject, $body_message, $headers); 

if ($mail_status) { ?> 
<script language="javascript" type="text/javascript"> 
    alert('Thank you for the message. We will contact you shortly.'); 
    window.location = 'index.html'; 
</script> 
<?php 
} 
else { ?> 
<script language="javascript" type="text/javascript"> 
    alert('Message sending failed. Please, send an email to   
[email protected]'); 
    window.location = 'index.html'; 
</script> 
<?php } 
?> 

這裏的表格

<form action="contact.php" method="post"> 
    <input type="text" class="text" value="Name..." onfocus="this.value = '';" onblur="if (this.value =='') {this.value = 'Name...';}"> 
    <input type="text" class="text" value="Email..." onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Email...';}"> 
    <input type="text" class="text" value="Phone..." onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Phone...';}"> 
    <input type="text" class="text" value="Company..." onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Company...';}"> 
    <textarea value="Message..." onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Message';}">Message...</textarea> 
    <input class="wow shake" data-wow-delay="0.3s" type="submit" value="Send Message" /> 
</form> 
+0

這條線替換

<input type="text" class="text" value="Name..." onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Name...';}"> 

有一個額外的'v': 'V $ field_phone = $ _ POST [ '電話......'];' – Knarf 2015-02-05 19:11:36

+0

這是複製和粘貼錯誤...我的壞。 – 2015-02-05 19:30:27

+0

現在,我如何使所需的字段? – 2015-02-05 19:40:22

回答

0

如果您$_POST應該返回的東西爲你的歸屬,你需要指定屬性name你與各自的價值創造每個輸入字段內在$ _POST中聲明。

此外,您可能會面對空白頁面,這意味着您有語法錯誤。

不難發現什麼是錯的。

在你的代碼段第4行中,我可以看到有你聲明的變量之間的信v

<?php 
$field_name = $_POST['Name...']; 
$field_email = $_POST['Email...']; 
v$field_phone = $_POST['Phone...']; 
$field_company = $_POST['Company']; 
$field_message = $_POST['Message...']; 

刪除它,並再次嘗試刷新頁面。
此外,重要的是你看看php_error_log,看看你面對的是什麼樣的錯誤。

編輯

如果你想打開必填字段,HTML5有一個新的屬性,你可以包括在每個input標籤叫required
只需添加你input標籤結束這個屬性是這樣的:

<input type="text" class="text" name="Name" value="Name..." onfocus="this.value = '';" onblur="if (this.value =='') {this.value = 'Name...';}" required>

有很多對HTML5新特性,你可以在這裏找到:http://www.w3schools.com/html/html_form_attributes.asp

+0

它的工作。非常感謝...... – 2015-02-05 19:39:53

+0

@RafaelGranato:由於我的回答完成了,獲取了另一個關於您主題的錯誤,我會請您接受我的答案。我在你的代碼中修復了兩個問題。順便說一下,我編輯了我的答案,包括如何在您的字段中放置必填字段。 =) – bcesars 2015-02-05 19:42:59

1

其空的,因爲你的投入沒有名稱屬性。所有輸入都需要name屬性。示例:

<input type="text" value="" id="first_name" name="first_name" /> 
+0

它的工作。非常感謝... – 2015-02-05 19:37:10

+0

現在,我如何使所需的字段? – 2015-02-05 19:41:46

1

您的HTML中沒有名稱屬性。確保有名稱屬性,以便它們可以在PHP中訪問。

而且,請注意,以不命名的屬性爲「名稱......」,去掉點

+0

它工作。非常感謝... – 2015-02-05 19:36:03

+0

我首先發布了我的答案?爲什麼我沒有得到一個投票? – technology101010 2015-02-05 19:39:10

+0

我不能投票...沒有任何意見。 – 2015-02-05 19:59:18

0

您可以使用if檢查,如果值是空的或不是,如:

if(!empty($field_name)) { 
    // the field name is not empty and you can send the mail 
    $mail_status = mail($mail_to, $subject, $body_message, $headers); 
} 

此外,你必須給你的<input />字段正確的名稱。你可以這樣做:

<?php $field_name = $_POST['fieldname']; ?> 
<input name="fieldname" /> 
+0

它的工作。非常感謝... – 2015-02-05 19:37:40

+0

if函數使所需的字段不起作用...任何其他建議? – 2015-02-05 19:42:52

0

你正在做一個簡單的錯誤 - 當一個HTML input元素職位,以一個PHP的形式,它的$_POST數組中充滿指數是基於HTML元素的name屬性,但是您正在使用value屬性。

我也會避免像name屬性中的句點那樣的奇怪字符。

嘗試用

<input type="text" class="text" name="Name" onfocus="this.value = '';" onblur="if (this.value == '') {this.value = 'Name...';}"> 
+0

謝謝!有效。 – 2015-02-05 19:47:21