2017-03-15 21 views
0

私のウェブサイト(テンプレートから)に以下の連絡フォームを実装しました。メールの送受信はできますが、メッセージの部分(ユーザーテキスト)は私の受信トレイには届いていません。 私は名前とメールから、メッセージの内容は受け取っていません。Contact.phpメールを送信しますが、テキストメッセージはありません

screenshot from the website form

誰かが問題を発見し、固定助けることができますか?それはPHP、jQueryまたはhtml間違っている?

HTML:

<form action="contact.php" class="contact_form" id="form" method="post"> 
       <div class="col-lg-6 col-md-6 col-lg-offset-3 col-md-offset-3"> 
        <span class="input input_name"> 
         <input class="input__field" type="text" name="name" id="name" required/> 
         <label class="input__label" for="name"> 
         <span class="input__label_content">Name</span> 
         </label> 
        </span> 
        <span class="input input_website"> 
         <input class="input__field" type="url" name="website" id="website" /> 
         <label class="input__label" for="website"> 
         <span class="input__label_content">Website</span> 
         </label> 
        </span> 
        <span class="input input_mail"> 
         <input class="input__field" type="email" name="email" id="email" required/> 
         <label class="input__label" for="email"> 
         <span class="input__label_content">email</span> 
         </label> 
        </span> 
       </div> 
       <div class="col-lg-8 col-md-8 col-lg-offset-2 col-md-offset-2"> 
        <span class="textarea"> 
         <textarea class="textarea_field" name="textarea" id="textarea" rows="4" placeholder="type your text here . . . ."></textarea> 
        </span> 
        <span class="submit"> 
         <button type="submit" class="rms-btn submit_btn" id="submit">submit request <span><i class="fa fa-pencil"></i></span></button> 
        </span> 
       </div> 
      </form> 

contact.php:

<?php 
/* 
* Ajax form submit 
*/ 

# request sent using HTTP_X_REQUESTED_WITH 
if(isset($_SERVER['HTTP_X_REQUESTED_WITH'])){ 
     if (isset($_POST['name']) AND isset($_POST['email']) AND isset($_POST['textarea'])) { 
       $to = '[email protected]'; /* Add your contact email address here */ 

       $name = filter_var($_POST['name'], FILTER_SANITIZE_STRING); 
       $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
       $subject = filter_var($_POST['subject'], FILTER_SANITIZE_STRING); 
       $message = filter_var($_POST['textarea'], FILTER_SANITIZE_STRING); 
       $sent = email($to, $email, $name, $message); 
       if ($sent) { 
         echo 'Message sent!'; 
       } else { 
         echo 'Message couldn\'t sent!'; 
       } 
     } 
     else { 
       echo 'All Fields are required'; 
     } 
     return; 
} 

/** 
* email function 
* 
* @return bool | void 
**/ 
function email($to, $from_mail, $from_name, $subject, $message){ 
     $header = array(); 
     //$header[] = "MIME-Version: 1.0"; 
     $header[] = "From: {$from_name} < {$from_mail}>"; 
     $header[] = "Message: {$message}"; 
     /* Set message content type HTML*/ 
     /*$header[] = "Content-type:text/html; charset=iso-8859-1";*/ 
     /*$header[] = "Content-Transfer-Encoding: 7bit";*/ 
     if(mail($to, $message, implode("\r\n", $header))) return true; 
} 

?> 

contact.js

jQuery(document).ready(function() { 
    var form = jQuery('#form'); // contact form 
    var submit = jQuery('#submit'); // submit button 
    var alert = jQuery('.alert'); // alert div for show alert message 

    // form submit event 
    form.on('submit', function(e) { 
     e.preventDefault(); // prevent default form submit 
     // sending ajax request through jQuery 
     jQuery.ajax({ 
      url: 'contact.php', // form action url 
      type: 'POST', // form submit method get/post 
      dataType: 'html', // request type html/json/xml 
      data: form.serialize(), // serialize form data 
      beforeSend: function() { 
       alert.fadeOut(); 
       submit.html('Sending....'); // change submit button text 
      }, 
      success: function(data) { 
       alert.html(data).fadeIn(); // fade in response data 
       form.trigger('reset'); // reset form 
       submit.html('Email Sent <span> <i class="fa fa-check"></i> </span>'); // reset submit button text 
      }, 
      error: function(e) { 
       console.log(e) 
      } 
     }); 
    }); 
}); 

ありがとう!

答えて

0

$message = filter_var($_POST['textarea'], FILTER_SANITIZE_STRING); 

を編集して

$message = filter_var($_POST['message'], FILTER_SANITIZE_STRING); 

を交換してください:はまた、このラインは疑問である:名前subjectを持つフィールドがない

$subject = filter_var($_POST['subject'], FILTER_SANITIZE_STRING); 

+0

私はcontact.phpフォームを更新しましたが、とにかく同じ問題が残っています。ご回答ありがとうございます。 –

0

あなたのテキストエリアには 'textarea'という名前がありますが、あなたのPHPファイルでは$_POST['message']が処理されています。 $_POST['textarea']私はtextareaのように見えます

+0

私はcontact.phpフォームを更新しましたが、とにかく同じ問題が残っています。ご回答ありがとうございます。 –

+0

メール機能を確認してください。docs:http://php.net/manual/en/function.mail.php '$ subject'の前に' $ subject'を設定する必要があります。 – gmc

0

に「メッセージ」や​​$_POST['message']にテキストエリアの名前を変更するには、フォーム上の名前textareaですが、あなたはmessageと呼ばれるPOST変数を参照しています。

関連する問題