HTML5,CSS3,PHP联系表单不发送信息+添加必填字段

时间:2015-02-05 19:09:13

标签: javascript php html css forms

我已在我的网站上添加了联系表单。表单发送电子邮件,但我没有收到信息。所有字段都是空白的。此外,我想制作所需的字段。任何人?

这是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@me.com';
$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@me.com');
  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>

5 个答案:

答案 0 :(得分:1)

它是空白的,因为您的输入没有name属性。所有输入都需要name属性。例如:

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

答案 1 :(得分:1)

HTML中没有名称属性。确保存在名称属性,以便可以在PHP中访问它们。

另外,请注意不要将属性命名为“Name ...”,删除点

答案 2 :(得分:0)

如果您的$_POST应该为您的归因返回一些内容,则需要在您创建的每个输入字段中使用$ _POST&#39;中声明的相应值指定属性name

此外,您可能会遇到空白页面,这意味着您有语法错误。

找到错误并不难。

在您的代码段的第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会有一个新属性,您可以在inputrequired标记中添加该属性。
只需在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

答案 3 :(得分: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" />

答案 4 :(得分:0)

你犯了一个简单的错误 - 当html输入元素发布到php表单时,它填充在$_POST数组中的索引基于html的name属性element,但您使用的是value属性。

我还会避免使用name属性中的句点之类的奇怪字符。

尝试替换

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

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