1

我有一个基本的联系表格,它将用户的消息两次发送给显示该表格的公司:一次包含所有正确的信息,一次包含空白的文本字段,即列出了姓名、电子邮件、电话、消息但不包含信息。我已经研究了几个小时,但无法弄清楚。

在我页面的最顶部,我有这个标题:

 <?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");

 ?>

感谢您提前提供任何帮助。

4

2 回答 2

0

编辑:根据您添加到问题中的附加 javascript 代码...

问题可能是表单是由javascript 和 html提交的。如果您删除了 javascript,表单可能仍会提交。这表明不需要 javascript 来提交表单。但是,如果打开了 javascript,则 ajaxSubmit 将运行,但这也不会阻止表单正常提交。如果你想阻止表单提交,你需要这样说:

return false;在提交处理程序上。


无论表单是否已提交,您都可以让 PHP 代码运行,并且代码与表单位于同一网页上。

这意味着每当用户第一次显示表单时以及用户提交表单后都会发送一封电子邮件。

要阻止这种情况,您可以:

  • 使表单提交到不同的网页,并将发送电子邮件的 PHP 代码移动到该网页。
  • 或者你可以设置一个 if 守卫,例如。if ($name + $email + $phone + $message != "") { /* send mail here */}. if (...)条件检查是否输入了任何数据。
于 2012-08-21T23:17:57.113 回答
0

你有两次调用你的mail函数。它应该只被调用一次,看起来类似于:

mail($to, $subject, $message, $headers);
于 2012-08-21T23:18:45.857 回答