Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.03.2018, 13:22
Аспирант
Отправить личное сообщение для Noonf Посмотреть профиль Найти все сообщения от Noonf
 
Регистрация: 26.11.2017
Сообщений: 38

После каждого обновления сайта приходит пустое письмо по форме
Здравствуйте! Помогите разобраться, почему при каждом обновлении или переходе на сайт приходит пустое письмо на почту по форме обратного звонка. Вот код, скрипт и обработчик

<article class="call_form">
            <form class="div_form" method="post" name="contactForm"><input class="name_txt f16px" maxlength="30" name="uname" required="" size="20" type="text" placeholder="Ваше имя *" />
            <input class="email_txt f16px" maxlength="30" name="email" required="" size="20" type="email" placeholder="Ваш e-mail *" />
            <input class="phone_txt f16px" maxlength="30" name="phone" required="" size="20" type="tel" placeholder="Ваш телефон *" />
            <textarea class="txt_form" maxlength="500" name="text" placeholder="Краткое описание заявки"></textarea>
            <input name="bezspama" type="text" style="display:none" value="" />
            <button class="button_call_form padd aligner f18px white cursor" type="submit">Отправить</button>
            </form></form>
        </article>


jQuery(document).ready(function() {
    
  jQuery('form').submit(function(event) {

    event.preventDefault();
    var form_data = $(this).serialize();
     
    jQuery.ajax({
      type: jQuery(this).attr('method'),
      url: jQuery(this).attr('action'),
      data: form_data,
      cache: false,
      processData: false,
      success: function(result) {
      alert('Ваша заявка принята, спасибо! В ближайшее время с Вами свяжется наш специалист.'),
      location.href = "http://yummybox.by";
      header('Location: header.php');
      },
  
    });
  
  });

});


$recepient = "Punchenkoaleks@gmail.com";
$sitename = "yummybox.by";

$uname = trim($_POST["uname"]);
$phone = trim($_POST["phone"]);
$email = trim($_POST["email"]);
$text = trim($_POST["text"]);
$message = "Имя: $uname \nТелефон: $phone \nE-mail: $email \nТекст: $text";

$pagetitle = "Новая заявка с сайта \"$sitename\"";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");


Заранее благодарен!
Ответить с цитированием
  #2 (permalink)  
Старый 26.03.2018, 13:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Noonf
header('Location: header.php');
Нет в JS функции header.

То есть при каждом запросе страницы на почту приходит письмо само по себе?
Ответить с цитированием
  #3 (permalink)  
Старый 26.03.2018, 14:00
Аспирант
Отправить личное сообщение для Noonf Посмотреть профиль Найти все сообщения от Noonf
 
Регистрация: 26.11.2017
Сообщений: 38

Да, даже если форма до этого не заполнялась. А если заполнялась, то по отправлению приходит письмо с данными и одно пустое.
Ответить с цитированием
  #4 (permalink)  
Старый 26.03.2018, 14:09
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

header('Location: header.php'); - удалить из кода

type: jQuery(this).attr('method'),
url: jQuery(this).attr('action'),


достаточно

type: this.method,
url: this.action,

В остальном на клиенте в коде нет проблем и сама форма отправляться не может, если только ее не программно что-то отправляет. То есть проблему ищите на сервере, либо скрипт не по условию (приему формы отправляется), либо иные причины.

И почитайте об оформлении почтовых отправлений, так как у вас делать можно только как пример из мануала.
Ответить с цитированием
  #5 (permalink)  
Старый 26.03.2018, 14:15
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,733

Скорее всего страница выглядит примерно так:
<?php
mail();
?><body>
<form method="post">
<input type="submit"/>
</form>
</body>

Т.е. скрипт формирующий страницу является и обработчиком формы, а проверку на метод запроса не реализовали.
Ответить с цитированием
  #6 (permalink)  
Старый 26.03.2018, 14:22
Аспирант
Отправить личное сообщение для Noonf Посмотреть профиль Найти все сообщения от Noonf
 
Регистрация: 26.11.2017
Сообщений: 38

Да, проблема была в том, что обработчик находился в файле function.php
Но если формирую отдельный файл и прописываю action="contact-form.php" то письма совсем не приходят. Возможно адрес в action нужно прописать как-то иначе, т.к. CMS - WordPress
Ответить с цитированием
  #7 (permalink)  
Старый 26.03.2018, 14:30
Аспирант
Отправить личное сообщение для Noonf Посмотреть профиль Найти все сообщения от Noonf
 
Регистрация: 26.11.2017
Сообщений: 38

Все разобрался ) Прописал так action="<?php bloginfo('template_directory')?>/contact-form.php" Огромное спасибо за подсказки!!!
Ответить с цитированием
  #8 (permalink)  
Старый 26.03.2018, 14:33
Аспирант
Отправить личное сообщение для Noonf Посмотреть профиль Найти все сообщения от Noonf
 
Регистрация: 26.11.2017
Сообщений: 38

Nexus, я почему-то не могу отправить Вам отзыв ) Пишет, подряд одному и тому же нельзя, хотя я только что отправил отзыв laimas. И это уже не первый раз )
Ответить с цитированием
  #9 (permalink)  
Старый 26.03.2018, 15:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Noonf
Да, проблема была в том, что обработчик находился в файле function.php
Но если формирую отдельный файл и прописываю action="contact-form.php" то письма совсем не приходят.
Проблема не в имени или отдельности файла, а в том как обрабатывается запрос. POST и также асинхронный GET запрос может без проблем обрабатываться и по текущему адресу, нужно только проверять условие такого запроса и после его обработки завершать работу РНР.

<?php
If($_POST) { //и т.п.
    //выполнение
    exit; //обязательно  
}
?>
<html>
далее код страницы, которую получает клиент
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемешивание строк таблицы после обновления страницы сайта apavel jQuery 10 15.10.2017 15:33
background resize IceDvl jQuery 4 25.04.2014 17:54
Как сделать, чтобы после обновления открывался нужный раздел Mukhtar Events/DOM/Window 24 01.03.2013 03:34
Определение scrollTop после обновления окна cartrege Events/DOM/Window 0 31.08.2012 11:07
Событие после обновления страницы ajax'ом kryzhovnik Events/DOM/Window 4 07.10.2009 22:32