1

フォームを表示した会社にユーザーのメッセージを 2 回送信する基本的な連絡フォームがあります。1 回目はすべて正しい情報で、もう 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

関数への呼び出しが 2 つありますmail。これは 1 回だけ呼び出す必要があり、次のようになります。

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

編集:質問に追加した追加のJavaScriptコードに基づいて...

問題、フォームがJavaScript と html の両方によって送信されている可能性があります。JavaScript を削除しても、フォームは引き続き送信される場合があります。これは、フォームの送信に JavaScript が必要ないことを示しています。ただし、javascript がオンの場合、ajaxSubmit は実行されますが、フォームの送信も正常に停止しません。フォームの送信を停止したい場合は、次のように言う必要があります。

return false;submitHandler で。


フォームが送信されているかどうかに関係なく、その PHP コードを実行できます。コードは、フォームがオンになっているのと同じ Web ページにあります。

これは、ユーザーが最初にフォームを表示したときと、ユーザーがフォームを送信した後に電子メールが送信されることを意味します。

これを停止するには、次のことができます。

  • フォームを別の Web ページに送信し、メールを送信する PHP コードをその Web ページに移動します。
  • または、if ガードを設定することもできます。if ($name + $email + $phone + $message != "") { /* send mail here */}. 条件は、if (...)データが入力されているかどうかをチェックします。
于 2012-08-21T23:17:57.113 に答える