2016-11-18 165 views
0

我有一个简单的html表单,应该使用POST方法提交表单,它会发送mail.php上的表单内容发送电子邮件。我已经验证了PHP的邮件功能使用下面的代码在服务器上的工作:未提交表格

$headers = 'From: [email protected]'; mail('[email protected]', 'test email yo', 'This is a test email message', $headers, '[email protected]'); 

我使用发送邮件的PHP代码如下:

mail('[email protected]', $_POST['name'], $_POST['email'], $_POST['phone'], $_POST['message']); 

HTML表单,应该是发送的信息是这样的:

<form id="contact-form" class="contact-form" method="post" action="mail.php"> 
    <div class="success-message">Contact form submitted.</div> 
    <div class="coll-1"> 
     <p class="mbot3">Name*</p> 
     <label class="name"> 
      <input type="text" placeholder="" data-constraints="@Required @JustLetters" name="name"/> 
      <span class="empty-message">*This field is required.</span> 
      <span class="error-message">*This is not a valid name.</span> 
     </label> 
    </div> 
    <div class="coll-2"> 
     <p class="mbot3">E-mail*</p> 
     <label class="email"> 
      <input type="text" placeholder="" data-constraints="@Required @Email" name="email"/> 
      <span class="empty-message">*This field is required.</span> 
      <span class="error-message">*This is not a valid email.</span> 
     </label> 
    </div> 
    <div class="coll-3"> 
     <p class="mbot3">Phone</p> 
     <label class="phone"> 
      <input type="text" placeholder="" data-constraints="@JustNumbers" name="phone"/> 
      <span class="empty-message">*This field is required.</span> 
      <span class="error-message">*This is not a valid phone.</span> 
     </label> 
     </div> 
     <label class="message"> 
      <span class="mbot3">Message*</span> 
      <textarea placeholder="" data-constraints="@Required @Length(min=20,max=999999)" name="message"></textarea> 
      <span class="empty-message">*This field is required.</span> 
      <span class="error-message">*The message is too short.</span> 
     </label> 
    <div> 
     <a href="#" data-type="submit" class="btn-link btn-link1"><img src="img/arrow1.png" alt="">submit</a> 
     <p class="req">* Required fields</p> 
    </div> 
</form> 

我不能让形式的内容的电子邮件来通过,我猜想可能是错误的,这个问题是的形式和它的开机自检能力的次电子信息到PHP?

此代码来自预制模板,我没有自己写。

编辑:建议我添加了名称属性,但尚未解决问题。更新了HTML以反映当前的代码。

编辑2:已解决问题,我不得不删除id =“contact-form”不确定与此相关的是阻止表单提交,但它做到了。从那里我从原始形式采取了样式,并将它们添加到我替换的新ID中。

+1

给name属性来输入类型这样,然后尝试获得在该名称$ _POST –

+0

尝试在所有输入类型中添加** name **,例如

+0

只有一个更改@NIMESHPATEL name =“name”not name = “first_name”,因为他收到$ _POST ['name'] – PassionInfinite

回答

3

你错过了输入和textarea的

<input type="text" placeholder="" data-constraints="@Required @JustLetters" name = "name"/> 

name属性应该有相同的名字,你是从$ _ POST接收[ '名']

+0

我添加了名称属性,但电子邮件仍然没有通过。 – benikens

+0

将输入类型=文本更改为电子邮件以发送电子邮件。 – PassionInfinite

+0

我已经添加了这个,但仍然没有骰子。 – benikens

0

检查这些字段在您的HTML代码,

<input type="text" placeholder="" data-constraints="@Required @JustLetters" /> 
<input type="text" placeholder="" data-constraints="@Required @Email" /> 
<input type="text" placeholder="" data-constraints="@JustNumbers"/> 
<textarea placeholder="" data-constraints="@Required @Length(min=20,max=999999)"></textarea> 

并与下面的代码替换它们,你错过添加name属性,name使用您提交表格后引用表单数据属性。

<input type="text" name="name" placeholder="" data-constraints="@Required @JustLetters" /> 
<input type="text" name="email" placeholder="" data-constraints="@Required @Email" /> 
<input type="text" name="phone" placeholder="" data-constraints="@JustNumbers"/> 
<textarea name="message" placeholder="" data-constraints="@Required @Length(min=20,max=999999)"></textarea> 
+0

我加了这个,但它仍然不起作用 – benikens