我有一个基本的联系表单,它将用户的消息两次发送给显示表单的公司:一次包含所有正确的信息,一次文本字段为空白,即列出姓名,电子邮件,电话,消息但不包含任何信息。我已经工作了好几个小时,无法弄明白。
在我页面的最顶部,我有这个标题:
<?php
ob_start();
session_start();
if( isset($_POST['submit'])) {
if( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) {
// Processing
header("Location:http://www.berrieswebdesign.com/business1 /thankyou.php?happymessage=thanks");
unset($_SESSION['security_code']);
} else {
// Error Message
header("Location:http://www.berrieswebdesign.com/business1 /thankyou.php?sadmessage=securitybreach");
unset($_POST['submit']);
}
} else {
}
ob_flush();
?>
使用Javascript:
$(function(){
$('#contact').validate({
submitHandler: function(form) {
$(form).ajaxSubmit({
url: 'process.php',
success: function() {
$('#contact').hide();
$('#contact-form').append("<p class='thanks'>Thanks! Your request has been sent.</p>")
}
});
}
});
});
和process.php
function GetHeaders()
{
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'From: Company Name<info@companyname.com>' . "\r\n";
return $headers;
}
// Get Data
$name = strip_tags($_POST['name']);
$email = strip_tags($_POST['email']);
$phone = strip_tags($_POST['phone']);
$message = strip_tags($_POST['message']);
// Send Message
$headers = GetHeaders();
$intro = "\"Thank you for contacting company name. We are very interested in assessing your situation and will be in touch as soon possible.\" <br />
<br/>
Best Regards,<br/>
<br/>
Company<br/>
";
mail($email, "RE: Contact Form Submission", $intro, $headers);
mail("me@yahoo.com", "Inquiry", "Name: {$name}\n Email: {$email}\n Phone: {$phone}\n Message: {$message}\n");
?>
感谢您提前提供任何帮助。
答案 0 :(得分:1)
您有两次调用mail
功能。它应该只调用一次,看起来类似于:
mail($to, $subject, $message, $headers);
答案 1 :(得分:0)
修改:根据您添加到问题中的其他JavaScript代码...
问题可能表单是由两者 javascript和html提交的。如果您删除了javascript,表单可能仍会提交。这表明提交表单不需要javascript。但是,如果启用了javascript,则ajaxSubmit将运行,但这并不能阻止表单正常提交。如果您想停止提交表单,您需要说出以下内容:
在submitHandler上 return false;
。
无论表单是否已提交,您都可以运行该PHP代码,并且代码与表单所在的网页位于同一网页上。
这意味着只要用户首次显示表单,就会在用户提交表单后发送电子邮件。
要停止此操作,您可以:
if ($name + $email + $phone + $message != "") { /* send mail here */}
。 if (...)
条件检查是否输入了任何数据。