这个联系表格代码有什么问题?

时间:2013-12-30 18:12:07

标签: javascript php html

这是我的简单联系表单的代码。所有电子邮件都成功发送,但是当他们没有输入任何信息时,应该出现的错误消息不会发送,并且它会发送电子邮件空白。由于我不希望收到垃圾邮件,我做错了什么?

代码:

<?php

$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_message = $_POST['message'];

$mail_to = 'myemail@goeshere';
$subject = 'Message from client: '.$field_name;

$body_message = 'From: '.$field_name."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;

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

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

if ($mail_status) { ?>
    <script language="javascript" type="text/javascript">
        alert('Thank you for contacting us');
        window.location = 'index.html';
    </script>
<?php
}
else { ?>
    <script language="javascript" type="text/javascript">
        alert('Your message failed to send due to invalid credentials.');
        window.location = 'index.html';
    </script>
<?php
}
?>

HTML表单:

<form method="post" action="contact.php">
<div class="row half">
<div class="6u"><input type="text" class="text" name="name" placeholder="Name" /></div>
<div class="6u"><input type="text" class="text" name="email" placeholder="Email" /></div>
</div>
<div class="row half">
<div class="12u">
<textarea name="message" placeholder="Message"></textarea>
</div>
</div>
<div class="row">
<div class="12u">
<a href="#" class="button submit">Send Message</a>
</div>
</div>
</form>

很抱歉,如果代码没有正确缩进...

3 个答案:

答案 0 :(得分:2)

您没有任何代码可以检查字段是否已填写。您应该使用isset()检查字段是否已设置,并且使用filter_var之类的内容检查字段是否包含有效数据

此外,您不应该依赖JavaScript来进行重定向,如果用户禁用了JavaScript,则无法使用。使用PHP进行重定向。

答案 1 :(得分:0)

无论表单的验证状态如何,代码始终会发送电子邮件。相反,您可以在尝试发送电子邮件之前检查表单验证。整体逻辑看起来像这样:

  • 解析用户输入
  • 必填字段是否有效?
    • 是:发送电子邮件,显示成功消息
    • 否:显示错误消息

在代码中,它可能很简单:

$field_name = $_POST['name'];
$field_email = $_POST['email'];
$field_message = $_POST['message'];

if ($field_email != '') {
    // compose and send the email
    // display success message
} else {
    // display error message
}

要对其他字段进行其他检查,您需要在if语句中添加其他条件。

答案 2 :(得分:0)

如果邮件被接受传递,mail函数将返回TRUE。由于所有必需参数都存在,即使参数为空字符串,它也会接受邮件。

您需要检查输入是否有效。