X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Отправка данных на e-mail из 2-х полей, Как реализовать такую функцию?
Linkoln
Linkoln
Topic Starter сообщение 6.5.2016, 10:25; Ответить: Linkoln
Сообщение #1


Участник
***

Группа: User
Сообщений: 135
Регистрация: 2.4.2014
Из: Россия
Поблагодарили: 39 раз
Репутация:   13  


Здравствуйте, уважаемые форумчане. Столкнулся я с проблемой, которая не дает мне покоя уже второй день.

Суть задачи - отправлять данные из 2-х полей (имя и телефон) на электронный ящик. После отправки выводить другой DIV "Сообщение отправлено". Все.

Я не силен в js и php, поэтому прошу помощи у опытных людей.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KurtRassel
KurtRassel
сообщение 6.5.2016, 11:34; Ответить: KurtRassel
Сообщение #2


Новичок
*

Группа: User
Сообщений: 47
Регистрация: 22.6.2013
Поблагодарили: 12 раз
Репутация:   0  


Linkoln, привет, держи.

mail.php
Код
<?php
header('Content-Type: text/html; charset=utf-8');
if ($_POST['phone'] && $_POST['name']) {

    $mail = "myEmail@gmail.com"; // Принимающий email

    $title = "У Вас новое сообщение от " + $_POST['name'];
    $text = "Позвоните на номер " . $_POST['phone'];

    if (mail($mail, $title, $text, "Content-Type: text/plain;charset=utf-8\r\nFrom: ". $_POST['name'] ." <New". $_POST['name'] ."@gmail.com>\r\n")) {
        echo "<div>Сообщение отправлено!</div>";
    }
    else {
        echo "<div>Ошибка, ваше сообщение не отправлено!</div>";
    }

}


Добавить на страницу:

Код
<div id="status"></div>
<label>Имя:
  <input type="text" id="name">
</label>
<label>Телефон:
  <input type="text" id="phone">
</label>
<a href="#" id="send">Отправить</a>


<script>

var send = document.getElementById('send');
send.addEventListener('click', function() {
  var name = document.getElementById('name');
  var phone = document.getElementById('phone');
  if (name.value == '' || phone.value == '') {
    return false;
  }
  var status = document.getElementById('status');
  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/mail.php', true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        status.innerHTML = xhr.responseText;
    }
    else {
        status.innerHTML = 'Ошибка сервера!';
    }
  }
  xhr.send('name=' + name + '&phone=' + phone);
});


</script>


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WoWeb
WoWeb
сообщение 6.5.2016, 11:56; Ответить: WoWeb
Сообщение #3


Бывалый
****

Группа: User
Сообщений: 318
Регистрация: 18.8.2015
Поблагодарили: 131 раз
Репутация:   23  


Linkoln,
Вот отличная форма, чекбокс я не робот, при отправке всплывает окно с благодарностью, можно во всплывающем окне сделать а можно и статично, но нужно ковырять CSS

_http://lebonnet.ru/ajax-forma-obratnoj-svyazi-php-jquery/comment-page_2-mt.html

P.S. Если сайт грузится и просто белое окно - отключите яваскрипт в браузере, у них какая то бага.

Сообщение отредактировал WoWeb - 6.5.2016, 11:57


--------------------
Моя тема: Разработка web сайтов | Мой сайт: https://woweb.com.ua/
Куплю ссылки на сайтах СДЛ не моложе 2-х лет.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KurtRassel
KurtRassel
сообщение 6.5.2016, 12:15; Ответить: KurtRassel
Сообщение #4


Новичок
*

Группа: User
Сообщений: 47
Регистрация: 22.6.2013
Поблагодарили: 12 раз
Репутация:   0  


Немного ошибся, вместо:

Код
    else {
        status.innerHTML = 'Ошибка сервера!';
    }

вставить:
Код
    else if (xhr.readyState == 4 && xhr.status != 200) {
        status.innerHTML = 'Ошибка сервера!';
    }


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Linkoln
Linkoln
Topic Starter сообщение 6.5.2016, 21:11; Ответить: Linkoln
Сообщение #5


Участник
***

Группа: User
Сообщений: 135
Регистрация: 2.4.2014
Из: Россия
Поблагодарили: 39 раз
Репутация:   13  


Благодарю за ответы. Вечером протестирую.

Больше подходит форма KurtRassel, так как более простая как для меня, так и для пользователя. ^_^ Надеюсь будет работать.

Ни один вариант не работает.

Движок DLE
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KurtRassel
KurtRassel
сообщение 6.5.2016, 21:30; Ответить: KurtRassel
Сообщение #6


Новичок
*

Группа: User
Сообщений: 47
Регистрация: 22.6.2013
Поблагодарили: 12 раз
Репутация:   0  


Форма:
Код
<div id="status"></div>
<label>Имя:
  <input type="text" id="name">
</label>
<label>Телефон:
  <input type="text" id="phone">
</label>
<a href="#" id="send" onclick="return false;">Отправить</a>


Код:
Код
<script>
var send = document.getElementById('send');
send.addEventListener('click', function() {
  var name = document.getElementById('name');
  var phone = document.getElementById('phone');
  if (name.value == '' || phone.value == '') {
    return false;
  }
  var status = document.getElementById('status');
  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/mail.php', true);
  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        status.innerHTML = xhr.responseText;
    }
    else if (xhr.readyState == 4 && xhr.status != 200) {
        status.innerHTML = 'Ошибка сервера!';
    }
  }
  xhr.send('name=' + name + '&phone=' + phone);
});

</script>


mail.php должен быть в корне или если не в корне, то пропишите в скрипте путь.

Чтобы протестировать, создайте mail.php добавьте в корень сайта и зайдите на него domain.com/mail.php, если увидите сообщение, тогда добавьте полный скрипт скрипт.
Код
<?php
echo "Работает";


Полный:
Код
<?php
header('Content-Type: text/html; charset=utf-8');
if ($_POST['phone'] && $_POST['name']) {

    $mail = "myEmail@gmail.com"; // Принимающий email

    $title = "У Вас новое сообщение от " + $_POST['name'];
    $text = "Позвоните на номер " . $_POST['phone'];

    if (mail($mail, $title, $text, "Content-Type: text/plain;charset=utf-8\r\nFrom: ". $_POST['name'] ." <New". $_POST['name'] ."@gmail.com>\r\n")) {
        echo "<div>Сообщение отправлено!</div>";
    }
    else {
        echo "<div>Ошибка, ваше сообщение не отправлено!</div>";
    }

}
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Linkoln
Linkoln
Topic Starter сообщение 7.5.2016, 12:58; Ответить: Linkoln
Сообщение #7


Участник
***

Группа: User
Сообщений: 135
Регистрация: 2.4.2014
Из: Россия
Поблагодарили: 39 раз
Репутация:   13  


KurtRassel, сообщение выдает, но после замены кода не работает.

Каким-то чудом решил проблему.
Кому интересно, использовал эту форму - http://smartlanding.biz/otpravka-formy-bez...i-stranicy.html

Сообщение отредактировал Linkoln - 7.5.2016, 12:59
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) Сайты и закон с 152-ФЗ о персональных данных
документы, штрафы
30 DVORYAN 3254 Сегодня, 0:15
автор: Epsilapos
Открытая тема (нет новых ответов) Продвижение в Mail.Ru: 6 кейсов, проливающих свет на алгоритмы поисковика №3
alexeytrudov.com - персональный блог SEO-аналитика
0 Luden 313 Вчера, 22:01
автор: Luden
Открытая тема (нет новых ответов) Подскажите API для получения данных по сайту
Страниц в Яндексе, страниц в Google, ТИЦ
0 SergeiVL 298 Вчера, 15:43
автор: SergeiVL
Открытая тема (нет новых ответов) Продам почтовые акки автореги Mail.ru + Yandex.ru
14 angel737 2924 15.7.2017, 19:07
автор: angel737
Открытая тема (нет новых ответов) Что нужно сделать с сайтом, чтобы не получить штрафы от Роскомнадзора из-за закона о персональных данных
2 jack 690 13.7.2017, 13:49
автор: monson


 



RSS Текстовая версия Сейчас: 21.7.2017, 22:48
Дизайн