2010-12-28 11 views
1

私は3つのフィールドとテキストエリアを持つ連絡フォームを持っています...
私はそれを検証してから電子メールを送信するためにjQueryを使用します。連絡先フォームのFromフィールドとmail()関数の問題

この連絡先フォームはうまくいきますが、メールを受け取ったときに、[差出人]フィールドが正しくありません。そのFromフィールドに連絡先フォームのNameフィールドに入力されたテキストが表示されるようにしたいと思います。 <[email protected]>

たとえば、ユーザーが名前欄に「Matthew」と入力すると、「Matthew」という単語が「From」フィールドに表示されるようにしたいと考えています。ヘッダ:

<div id="contact"> 
    <h3 id="formHeader">Send Us a Message!</h3> 
    <form id="contactForm" method="post" action=""> 
     <div id="risposta"></div> <!-- End Risposta Div --> 
     <span>Name:</span> 
     <input type="text" id="formName" value="" /><br /> 
     <span>E-mail:</span> 
     <input type="text" id="formEmail" value="" /><br /> 
     <span>Subject:</span> 
     <input type="text" id="formSubject" value="" /><br /> 
     <span>Message:</span> 
     <textarea id="formMessage" rows="9" cols="20"></textarea><br /> 
     <input type="submit" id="formSend" value="Send" /> 
    </form> 
</div> 


<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#formSend").click(function(){ 

      var valid = ''; 
      var nome = $("#formName").val(); 
      var mail = $("#formEmail").val(); 
      var oggetto = $("#formSubject").val(); 
      var messaggio = $("#formMessage").val(); 

      if (nome.length<1) { 
       valid += '<span>Name field empty.</span><br />'; 
      } 
      if (!mail.match(/^([a-z0-9._-][email protected][a-z0-9._-]+\.[a-z]{2,4}$)/i)) { 
       valid += '<span>Email not valid or empty field.</span><br />'; 
      } 
      if (oggetto.length<1) { 
       valid += '<span>Subject field empty.</span><br />'; 
      } 

      if (valid!='') { 
       $("#risposta").fadeIn("slow"); 
       $("#risposta").html("<span><b>Error:</b></span><br />"+valid); 
       $("#risposta").css("background-color","#ffc0c0"); 
      } 
      else { 
       var datastr ='nome=' + nome + '&mail=' + mail + '&oggetto=' + oggetto + '&messaggio=' + encodeURIComponent(messaggio); 
       $("#risposta").css("display", "block"); 
       $("#risposta").css("background-color","#FFFFA0"); 
       $("#risposta").html("<span>Sending message...</span>"); 
       $("#risposta").fadeIn("slow"); 
       setTimeout("send('"+datastr+"')",2000); 
      } 
      return false; 
     }); 
    }); 
    function send(datastr){ 
     $.ajax({  
      type: "POST", 
      url: "contactForm.php", 
      data: datastr, 
      cache: false, 
      success: function(html) { 
      $("#risposta").fadeIn("slow"); 
      $("#risposta").html('<span>Message successfully sent.</span>'); 
      $("#risposta").css("background-color","#e1ffc0"); 
      setTimeout('$("#risposta").fadeOut("slow")',2000); 
      } 
     }); 
    } 
    </script> 

<?php 
$mail = $_POST['mail']; 
$nome = $_POST['nome']; 
$oggetto = $_POST['oggetto']; 
$text = $_POST['messaggio']; 
$ip = $_SERVER['REMOTE_ADDR']; 
$to = "[email protected]"; 

$message = $text."<br /><br />IP: ".$ip."<br />"; 
$headers = "From: $nome \n"; 
$headers .= "Reply-To: $mail \n"; 
$headers .= "MIME-Version: 1.0 \n"; 
$headers .= "Content-Type: text/html; charset=UTF-8 \n"; 

mail($to, $oggetto, $message, $headers); 
?> 

答えて

3

は、あなたが "差出人" にメールアドレスを使用する必要があります:

この

は私のコード(XHTML、jQueryの、PHP)です。これを試してみてください:

$headers = "From: $nome <$mail>\r\n"; 
$headers .= "Reply-To: $mail\r\n"; 
+1

はあなたがフィールドからジョン・ドウ<[email protected]>として表示させたい場合は: $ヘッダ= "から:$ Rの\ nを\ノーム<$mail>を"。 –

+0

技術的には間違いありませんが、自分が行ったことを反映するためにあなたの投稿を編集しました。 – Erik

+0

@Kshitij Parajuli - +1、@Matthewちょうど[php documentation](http://php.net/manual/en/function.mail.php)をチェックしてください! – ifaour

関連する問題