我想使用PHP做一个联系表格,并且有一些问题。我是PHP的新手,所以无法弄清楚。如果没有应用验证码,但表单适用,但由于我应用了验证代码,因此可能需要某些字段,表单不能正常工作。此外,当我留下任何必填字段为空时,他们形成不显示任何错误消息。有人可以告诉问题是什么。我的PHP联系表格的一些问题
HTML表单
<form action="mail.php" method="POST" >
Name: <input type="text" name="name"><br/><br/>
Email: <input type="email" name="email"><br/><br/>
Phone Number: <input type="text" name="phone_number"><br/><br/>
Website: <input type="text" name="website"><br/><br/>
Message: <textarea name="message" rows="6" cols="25"></textarea><br/><br/>
<input type="submit" value="Submit">
</form>
主要PHP脚本文件
<?php
if(isset ($_POST['submit'])) {
$errors = array();
if(!empty ($_POST ['name'])) {
$name = $_POST ['name'];
} else {
$errors[] = "You forgot to enter your Name.";
}
if(!empty ($_POST ['email'])) {
$email = $_POST ['email'];
} else {
$errors[] = "You forgot to enter your Email.";
}
if(!empty ($_POST ['message'])) {
$message = $_POST ['message'];
} else {
$errors[] = "You forgot to enter your Message.";
}
$phone_number = $_POST['phone_number'];
$website = $_POST['website'];
$formcontent = "From: $name \n Email: $email \n Phone Number: $phone_number \n Website: $website \n Message: $message";
$recipient = "[email protected]";
$subject = "Contact Form";
$mailheader = "From: $email \r\n";
mail($formcontent, $recipient, $subject, $mailheader);
if(isset($_POST['submit'])) {
if(!empty($errors)) {
foreach ($errors as $msg)
{
echo '<li>'. $msg . '</li>';
}
} else {
echo "Thank You";
}
}
}
?>
UPDATE 谢谢您回复家伙,我几乎忘了具有提交按钮的名称属性。这有助于展示一些结果。但是现在一些通知显示未定义变量为$formcontent
和$mailheader
行的电子邮件,消息(如果我仅提供表单中的名称并点击提交按钮)。
既然你”重新使用'!empty',你最好把这个代码取出来,并使表单域成为'required'添加该属性,尤其是在使用HTML5的情况下。 – 2015-02-05 16:04:57
'if(isset($ _POST ['submit']))'您没有提交的名称属性来支持它,因此它内部没有任何用处。在使用[错误报告](http://php.net/manual/en/function.error-reporting.php)后,会抛出未定义索引提交警告/通知。 – 2015-02-05 16:05:40
您的提交按钮没有'name ='submit'',所以'$ _POST ['submit']'可能是空的。邮件的东西都应该在其他地方,你有'回声'谢谢你''因为你不想邮件,如果有错误。你不需要检查'ifset($ _ POST ['submit'])'两次是多余的 – 2015-02-05 16:06:03