2013-03-21 144 views
1

我创建了非常简单的邮件表单,并且存在一些问题。至少消息是发送,并有显示谢谢页面,但有注意: 未定义的索引:在public_www/n ....中的名称/ contact-form-handler.php在第14行 另一个错误是该名称不发送。邮件表单不能正常工作

感谢您的任何提示

<form class='contact_form' method="POST" action="contact-form-handler.php" > 
<ul> 
<li> 
<label for="name" >Name:</label> 
<input type="text" id="name" /> 
</li> 
<li> 
<label for="email" id="email">Email:</label> 
<input type="email" name="email" /> 
</li> 
<li> 
<label for="message" id="message">Message:</label> 
<textarea name="message" cols="40" rows="6" required ></textarea> 
</li> 
<li> 
<button class="submit" value="submit">Submit Form</button> 
</li> 
</ul> 
</form> 

和PHP是:

<?php 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
$to = "[email protected]"; 
$subject = "Contact"; 
$name_field = $_POST['name']; 
$email_field = $_POST['email']; 
$message = $_POST['message']; 
$body = "From: $name_field\n E-Mail: $email_field\n Message:\n $message"; 
echo include("contact-form-thank-you.html"); 
    mail($to, $subject, $body); 
} else { 
echo include("contact-form-error.html"); 
} 
?> 
+0

重新格式化你的HTML ....这是你在这可怕的格式! – ITroubs 2013-03-21 16:46:02

+0

请研究'未定义索引'的含义。我还建议您使用现有的库或类,如[PHPMailer](http://sourceforge.net/projects/phpmailer/)。 – Kermit 2013-03-21 16:46:03

+0

'echo include(...'?that's strange。see http://stackoverflow.com/questions/921479/echo-include-in-php – 2013-03-21 16:48:12

回答

2

YOUT HTML是错误的!这应该工作:

<form class='contact_form' method="POST" action="contact-form-handler.php" > 
<ul> 
<li> 
<label for="name" >Name:</label> 
<input type="text" name="name" /> 
</li> 
<li> 
<label for="email" id="email">Email:</label> 
<input type="email" name="email" /> 
</li> 
<li> 
<label for="message" id="message">Message:</label> 
<textarea name="message" cols="40" rows="6" required ></textarea> 
</li> 
<li> 
<button class="submit" value="submit">Submit Form</button> 
</li> 
</ul> 
</form> 

你混了id和你的名字输入

+0

谢谢,我知道它,它一定是愚蠢的东西,但我是看起来在PHP所有的时间。作品太棒了!谢谢你 – user2195583 2013-03-21 16:53:07

+0

接受答案... – ITroubs 2013-03-21 16:53:31

2

name当你想使用一种形式的重要属性是“名”来传递的东西:

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

与这应该工作。

id用于引用DOM中的元素,即使用Jquery或javascript时。

name是提交表单时使用的。

+0

我第一次;-) – ITroubs 2013-03-21 16:49:34

+0

你有快速的手指:P! – Naryl 2013-03-21 16:50:57

+0

的确我做.... – ITroubs 2013-03-21 16:51:38

2

您的“姓名”input没有name属性。 id属性本身并不意味着将$_POST数组条目发送到您的脚本。只有inputname属性中的数据才会发送到您的PHP脚本,只要它们没有disabled属性即可。

1

你忘了添加

name="name" 

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