Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Goreska
0 / 0 / 0
Регистрация: 10.12.2016
Сообщений: 6
1

Mail.php отправляет пустой текст из формы обратной связи на сайте

10.12.2016, 17:00. Просмотров 740. Ответов 2
Метки php (Все метки)

Добрый день. Есть форма обратной связи на сайте, скрипт js и mail.php. Сам алгоритм отрабатывает на ура, но вот письмо которое приходит - оно пустое. Т.е Имя\телефон\текст пустые. Дайте пожалуйста совет как исправить и куда копать
Вот скрипт js
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/Аякс отправка форм
    //Документация: [url]http://api.jquery.com/jquery.ajax/[/url]
    $("form").submit(function() {
        $.ajax({
            type: "GET",
            url: "mail.php",
            data: $("form").serialize()
        }).done(function() {
            alert("Спасибо за заявку! Скоро мы с вами свяжемся:)");
            setTimeout(function() {
                var magnificPopup = $.magnificPopup.instance;
                magnificPopup.close();
            }, 1000);
        });
        return false;
    });
Скрипт mail.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
 
$recepient = "goreslpt@gmail.com";
$sitename = "Реаниматор";
 
$name = trim($_GET["name"]);
$phone = trim($_GET["phone"]);
$text = trim($_GET["text"]);
 
$pagetitle = "Новая заявка с сайта \"$sitename\"";
$message = "Имя: $name \nТелефон: $phone \nТекст: $text";
mail($recepient, $pagetitle, $message, "Content-type: text/plain; charset=\"utf-8\"\n From: $recepient");
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2016, 17:00
Ответы с готовыми решениями:

Форма обратной связи не отправляет данные
Здравствуйте великие гуру PHP, помогите чайнику, хотел сделать на примере...

Форма обратной связи без отправки на e-mail
Я не знаю как сделать так, чтобы форма создавала файл (.htm/.txt) а не...

Формы обратной связи?
Здравствуйте, помогите пожалуйста создать две формы обратной связи! Чтобы...

UTF-8 для формы обратной связи
Здравствуйте! Я работаю над формой обратной связи с отправкой на электронную...

Поделитесь формой обратной связи php + js
Всем приветы. Мужики, есть у кого готовое решение формы обратной связи,...

2
Adigezalov
2 / 2 / 2
Регистрация: 23.06.2016
Сообщений: 65
11.12.2016, 10:40 2
Вчера тоже разбирался с формой обратной связи. Вот что получилось и вроде норм работает:
HTML5
1
2
3
4
5
6
7
8
9
<div class="feedback">
      <p>Задайте вопрос и мы свяжемся с Вами.</p>
      <input type="text" placeholder="Имя" id="name" name="name"><br />
      <input type="text" placeholder="Email" id="email" name="email"><br />
      <input type="text" placeholder="Тема сообщения" id="subject" name="subject"><br />
      <textarea id="message" name="message"></textarea><br />
      <div id="messageShow"></div>
      <input type="button" name="done" id="done" value="Отправить">
    </div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
$(document).ready (function () {
  $("#done").click (function () {
    $('#messageShow').hide ();
    var name = $("#name").val ();
    var email = $("#email").val ();
    var subject = $("#subject").val ();
    var message = $("#message").val ();
    var fail = "";
    if (name.length < 1)
      fail = "Заполните поле с именем";
    else if (email.split ('@').length - 1 == 0 || email.split ('.').length - 1 == 0)
      fail = "Email введен неверно";
    else if (subject.length < 1)
      fail = "Введите тему сообщения";
    else if (message.length < 1)
      fail = "Введите свой вопрос";
    if (fail != "") {
      $('#messageShow').html (fail + "<div class = 'clr'></div>");
      $('#messageShow').show ();
      return false;
    }
    $.ajax ({
      url: '../ajax/feedback.php',
      type: 'post',
      cache: false,
      data: {'name': name, 'email': email, 'subject': subject, 'message': message},
      dataTyte: 'html',
      success: function (data) {
        $('#messageShow').html (data + "<div class = 'clr'></div>");
        $('#messageShow').show ();
      }
    });
  });
});
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
  $name = htmlspecialchars($_POST['name']);
  $email = htmlspecialchars($_POST['email']);
  $subject = htmlspecialchars($_POST['subject']);
  $message = htmlspecialchars($_POST['message']);
 
  // Отправка
 
  $subject = "=?utf-8?B?".base64_encode($subject)."?=";
  $headers = "From: $email\r\nReply-to: $email\r\nContent-type: text/html; charset=utf-8\n";
  date_default_timezone_set ('Europe/Moscow');
  if (mail("ВАША ПОЧТА", $subject, $message, $headers))
    echo "Сообщение отправлено";
  else
    echo "Сообщение не отправлено";
?>
Добавлено через 33 секунды
Дополнительно нужно подключить библиотеку ajax.
0
Nurbakit
0 / 9 / 6
Регистрация: 31.03.2015
Сообщений: 65
13.12.2016, 20:53 3
У вас там только одна проблема!

Вы когда ajax делаете в js файле там в методе data написано $("form").serialize() я думаю здесь проблема. У вас на сайте не только одна тег с именим form.

Итак как работает язык js

Если ты так указал $("form") то js всегда найдет и вернет тебе то что найдет первым. Из за этого у тебя отправляет пустой текст. Так как на 1 форме ничего не заполнено!

Если заполнит первую форму то у тебя все ок будет!

Решение: $(this).serialize() а не $("form").serialize()

прочитай про this
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2016, 20:53

Изменение сообщения при отправке формы обратной связи
Есть страница &lt;?PHP if (!empty($_POST)){ $myemail =...

Очистка полей формы обратной связи после отправки
Как сделать так, чтобы после отправки поля формы очищались? или же реализовать...

Идёт спам с формы обратной связи. Как исправить?
Всем привет! Есть такой сайтик : http://oprteam.ru/ На нём 17 форм...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru