Intereting Posts
Лучше ли иметь две отдельные пользовательские таблицы или одну? Как декодировать строку JSON file_get_Contents не отправит строки запроса в url, поэтому ничего не получает с помощью $ _GET Сохранять файлы cookie для удаленных веб-страниц mysql update или вставить несколько записей, если они еще не существуют в таблице Установка разрешений в двоичном формате Как добавить пользовательское слово на мой доменный URL для каждого запроса? WordPress wp_enqueue_script («комментарий-ответ») для пользовательской темы контроллеры маршрутизации в подпапках – codeigniter Является ли Google единственным поставщиком OpenID, который требует «identifier_select»? Есть ли у PHP 5.x какой-то HashSet или Set Class? Разрешить сеансам php переносить на поддомены Larvel 4.2 artisan CLI больше не работает после обновления композитора PHP: поиск изображений и ссылок с относительным путем в выходе и преобразование их в абсолютный путь Установить часовой пояс экземпляра PostgreSQL

Контактная форма не будет отправлять данные

У меня есть код JSON в файле sendemail.php для моей контактной формы Bootstrap 3. Форма может отправить электронное письмо на указанный адрес электронной почты, но данные не отправляются. Я получаю пустые письма с метками и заголовком «неизвестный отправитель». Помогите решить эту проблему.

Это кусок кода формы загрузочной копии

<div class="col-sm-6"> <h1>Contact Form</h1> <p>Please contact us using the form or our contact details are available here if you'd like to contact us via Email or Phone.</p> <div class="status alert alert-success" style="display: none"></div> <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form"> <div class="row"> <div class="col-sm-6"> <div class="form-group"> <input type="text" name="Name" class="form-control" required placeholder="Name"> </div> </div> <div class="col-sm-6"> <div class="form-group"> <input type="text" name="Email" class="form-control" required placeholder="Email address"> </div> </div> </div> <div class="row"> <div class="col-sm-12"> <div class="form-group"> <textarea name="Message" id="message" required class="form-control" rows="8" placeholder="Message"></textarea> </div> <div class="form-group"> <button type="submit" class="btn btn-danger btn-lg">Send Message</button> </div> </div> </div> </form> </div><!--/.col-sm-6--> 

Это код main.js, где присутствует контактная форма AJAX

 jQuery(function($) { $(function(){ $('#main-slider.carousel').carousel({ interval: 5000, pause: false }); }); //Ajax contact var form = $('.contact-form'); form.submit(function () { $this = $(this); $.post($(this).attr('action'), function(data) { $this.prev().text(data.message).fadeIn().delay(3000).fadeOut(); },'json'); return false; }); //smooth scroll $('.navbar-nav > li').click(function(event) { if(!$( this ).attr( 'href' ).match(/^#/)) return; event.preventDefault(); var target = $(this).find('>a').prop('hash'); $('html, body').animate({ scrollTop: $(target).offset().top }, 500); }); //scrollspy $('[data-spy="scroll"]').each(function () { var $spy = $(this).scrollspy('refresh') }) //PrettyPhoto $("a.preview").prettyPhoto({ social_tools: false }); //Isotope $(window).load(function(){ $portfolio = $('.portfolio-items'); $portfolio.isotope({ itemSelector : 'li', layoutMode : 'fitRows' }); $portfolio_selectors = $('.portfolio-filter >li>a'); $portfolio_selectors.on('click', function(){ $portfolio_selectors.removeClass('active'); $(this).addClass('active'); var selector = $(this).attr('data-filter'); $portfolio.isotope({ filter: selector }); return false; }); }); }); 

Это код sendemail.php

 <?php header('Content-type: application/json'); $status = array( 'type'=>'success', 'message'=>'Email sent!' ); $name = $_POST['Name']; $email = $_POST['Email']; $subject = $_POST['Subject']; $message = $_POST['Message']; $email_from = $email; $email_to = 'myemail@domain.com'; $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; $success = @mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); echo json_encode($status); die; 

?>

Solutions Collecting From Web of "Контактная форма не будет отправлять данные"

Вам не хватает атрибута name в ваших тегах ввода html

Это необходимо для переменных на стороне сервера, например:

 $name = $_POST['Name']; 

получит значение от

 <input type="text" name="Name" class="form-control" required placeholder="Name"> 

 <form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form"> <div class="row"> <div class="col-sm-6"> <div class="form-group"> <input name="Name" type="text" class="form-control" required placeholder="Name"> </div> </div> <div class="col-sm-6"> <div class="form-group"> <input name="Email" type="text" class="form-control" required placeholder="Email address"> </div> </div> </div> <div class="row"> <div class="col-sm-12"> <div class="form-group"> <textarea name="Message" id="message" required class="form-control" rows="8" placeholder="Message"></textarea> </div> <div class="form-group"> <input type="submit" class="btn btn-danger btn-lg" value="Send Message"> </div> </div> </div> </form> 

 <?php if(isset($_POST['submit'],$_POST['Name'],$_POST['Email'],$_POST['Subject'],$_POST['Message'])){ $name = $_POST['Name']; $email = $_POST['Email']; $subject = $_POST['Subject']; $message = $_POST['Message']; $email_from = $email; $email_to = 'myemail@domain.com'; $body = 'Name: ' . $name . "\n\n" . 'Email: ' . $email . "\n\n" . 'Subject: ' . $subject . "\n\n" . 'Message: ' . $message; $success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>'); $response = array(); if($success){ $response['success'] = true; $response['message'] = 'Email sent!'; }else{ $response['success'] = false; $response['message'] = 'Email sent!'; } }else{ $response['success'] = false; $response['message'] = 'post variables are not set'; } echo json_encode($response); //die; 

Измените эту строку в main.js:

 $.post($(this).attr('action'), function(data) { 

чтобы:

 $.post($(this).attr('action'), $(this).serialize(), function(data) { 

Теперь он представит данные.