Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
Олеся Довга
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
1

Нужен php обработчик для формы обратной связи

08.12.2015, 14:43. Просмотров 1358. Ответов 8
Метки нет (Все метки)

Как отправить письмо с php файла с помощью функции mail() ?

Вот форма:
PHP
1
2
3
4
<form action="" class=" submForm form-horizontal order-form hide-on-success" method="post">
 <input class="form-control validate[required]" data-required="true" id="orderModalName" name="fio" placeholder="Ваше имя" type="text" value="">
<input class="form-control" data-required="true" id="orderModalPhoneMasked" name="phone" placeholder="Ваш телефон" type="tel" value="">
<button class="btn btn-block btn-submit" type="submit">Отправить</button>
Я знаю, что нужно сделать так:
PHP
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
<?php 
$sendto = "mail@yandex.ru"; // почта, на которую будет приходить письмо
$username = $_POST['fio'];   // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['phone']; // сохраняем в переменную данные полученные из поля c телефонным номером
 
// Формирование заголовка письма
$subject  = "Форма обратной связи";
 
// Формирование тела письма
$msg = "Форма обратной связи";
$msg .= "От кого:" .$username. "\r\n";
$msg .= "Текст" .$usertel. "\r\n";
 
// Отправка сообщения
$result = mail($sendto,$subject,$msg);
 
if($result) {
    echo "<script>
 
  setTimeout( 'location="http://yandex.ru";', 5000 );
 
</script>";
} else {
    echo "<script>
 
  setTimeout( 'location="http://google.ru";', 5000 );
 
</script>";
}
?>
Но вопрос как сделать чтобы данные с формы попадали в переменные? Я знаю, что можно в атрибут action написать путь к отдельному файлу php (например mail.php), но это мне не подходит.
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2015, 14:43
Ответы с готовыми решениями:

Помгите создать обработчик для формы обратной связи
Вот сам код для отправки почты &lt;h2 class=&quot;mbl&quot;&gt;Обратая связь&lt;/h2&gt; &lt;div id=&quot;step1&quot;&gt; ...

Обработчик формы обратной связи
Доброй ночи, потратил день, но мне так и не удалось добиться того, чтобы php возвращал указанный в...

Обработчик формы обратной связи
Приветствую всех, у меня есть форма &lt;form action=&quot;send.php&quot; method=&quot;post&quot;&gt; ...

Код html или php для формы обратной связи
форма обратной связи!! подскажите плиз код html или php для формы обратной связи в моём случае ...

Прикрутить php-скрипт для формы обратной связи из html шаблона
Имеется готовый HTML - шаблон, необходимо &quot;прикрутить&quot; уже написанный скрипт к страничке. Возможно...

8
Jodah
Эксперт PHP
3458 / 2914 / 1224
Регистрация: 01.08.2012
Сообщений: 10,052
08.12.2015, 14:58 2
Цитата Сообщение от Олеся Довга Посмотреть сообщение
чтобы данные с формы попадали в переменные
У вас это уже сделано.
Цитата Сообщение от Олеся Довга Посмотреть сообщение
PHP
1
2
$username = $_POST['fio']; * // сохраняем в переменную данные полученные из поля c именем
$usertel = $_POST['phone']; // сохраняем в переменную данные полученные из поля c телефонным номером
1
Олеся Довга
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
08.12.2015, 15:14  [ТС] 3
Jodah, то есть, при нажатии кнопки отправить данные буду попадать в переменные? В атрибут action нужно что то написать, нужен он в обще тогда?
[/PHP]
0
kosteash
7 / 7 / 3
Регистрация: 03.06.2015
Сообщений: 118
08.12.2015, 15:27 4
Цитата Сообщение от Олеся Довга Посмотреть сообщение
В атрибут action нужно что то написать, нужен он в обще тогда?
если у Вас обработчик находится в другом файле, то в action пишем к нему путь. В ином случае оставляейте его пустым
0
prudkiy
180 / 148 / 55
Регистрация: 21.07.2013
Сообщений: 954
08.12.2015, 15:29 5
Лучший ответ Сообщение было отмечено Олеся Довга как решение

Решение

Олеся Довга хоть я и не очень люблю функцию mail, но если если ее уже и использовать то 4 параметром нужно слать заголовок
PHP
1
2
$headers = "From: $from\r\nReply-to:$from\r\nContent-type:text/plain;charset=utf-8\r\n";
mail($sendto, $subject, $msg, $headers);
здесь text/plain говорит что ожидаем просто текст.
Если указать text/html то ожидаем html теги.
И еще - чтоб в заголовке не увидеть крякозябликов в каком то почтовом клиенте, нужно
PHP
1
$subject = "=?utf-8?b?".base64_encode($subject)."?=";
Вообще то на на реальном деле большинство "хостеров" выдают свои требования. Лично что я встречал -
- ящик отправитель хостера
- бесплатному или тестовому аккаунту функцию закрывают или запрещают text/html
- хостер находиться в черном списке у почтового клиента
- хостер запрещает функцию, просто по своим убеждениям

Лично мне этого хватило чтоб отказаться от функции mail() хотя сама по себе она и удобная.
т.к в основном хостеры работают с SMTP то уже не первый год использую phpMailer, это просто как рекомендация чтоб избежать частых гемороев и отправлять письма без проблем какого хочешь вида. Гуглите, там ничего сложного.
1
Олеся Довга
0 / 0 / 0
Регистрация: 28.05.2015
Сообщений: 108
08.12.2015, 15:53  [ТС] 6
kosteash, спасибо большое.

prudkiy, вам отдельное спасибо, подскажите как правильно сделать, неиспользовая функции mail() ?
0
prudkiy
180 / 148 / 55
Регистрация: 21.07.2013
Сообщений: 954
11.12.2015, 00:11 7
Цитата Сообщение от Олеся Довга Посмотреть сообщение
подскажите как правильно сделать, неиспользовая функции mail()
PHP
1
2
3
4
5
6
7
8
9
10
    $mail = new PHPMailer();
    $mail->IsMail();
    $mail->From = 'email от кого';
    $mail->AddCC('email кому', 'имя');
    $mail->CharSet = "UTF-8";
    $mail->isHTML(true);
    $mail->FromName = 'заголовок от кого';
    $mail->Subject = 'Типография Галла-М';
    $mail->Body = "тело письма";
    $mail->send();
или через smtp сторонего сервиса (тут gmail)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    $mail = new PHPMailer();
    $mail->isSMTP();  // тип
    $mail->Host = 'smtp.gmail.com'; // хост gmail
    $mail->SMTPAuth = true; // нужно авторизироваться
    $mail->Username = 'name'; // лого аккаунта
    $mail->Password = 'pass'; // пароль к аккаунту 
    $mail->SMTPSecure = 'ssl'; // узнавайте индивидуально 
    $mail->Port = '465'; // тоже инд.
    $mail->From = 'email'; // ящик от кого
    $mail->AddCC('email', 'name'); // ящик кому и подпись
    $mail->CharSet = "UTF-8"; // кодировка
    $mail->isHTML(true); // html можно
    $mail->FromName = 'Вася Вася'; // подпись от кого
    $mail->Subject = 'тема письма';
    $mail->Body = 'тело письма';
    $mail->send();
    $mail->ClearAddresses();
    $mail->ClearAttachments();
Вообще то можно разные использовать, я лично работал из gmail, yandex, mail.ru
и еще - в любом случаи подключаете в начале
PHP
1
require 'phpmailer/PHPMailerAutoload.php';
ссылка на библиотеку https://github.com/Synchro/PHPMailer
0
Xenox
161 / 161 / 65
Регистрация: 28.06.2015
Сообщений: 576
11.12.2015, 11:35 8
Цитата Сообщение от prudkiy Посмотреть сообщение
или через smtp сторонего сервиса (тут gmail)
Вопрос к вам, вы пробовали сейчас пользоваться тем кодом что привели?
Просто тоже недавно реализовывал отправку через smtp gmail, и 465 порт обрывал соединение, в том числе и telnet`ом не мог приконектиться, получилось авторизовать через TLS по 587 порту, но я использовал libmail, и поэтому пришлось чуть допиливать этот класс, с PHPMailer такая же ситуация? Или он умеет работать с TLS?
0
prudkiy
180 / 148 / 55
Регистрация: 21.07.2013
Сообщений: 954
11.12.2015, 19:46 9
Xenox Да, можно и tls. Дело в том что когда как, как у какого сервера. У меня с SSL работало, хотя если нужно то можно и через TLS по 587 порту, мне просто не встречалось, в основном проблем не было. Разве что помню хост запрещал пользоваться smtp, тогда пригодилось $mail->IsMail();
А так, хоть и слышал нарекания на ее, это лучшее что я встречал. Всегда можно подстроиться под условия хоста, без проблем что то положить в письмо, красиво оформить рекламное письмо.
Делал через нее рассылку, то вроде никто не жаловался )
0
11.12.2015, 19:46
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2015, 19:46

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

нужен простой скрипт формы обратной связи
Доброго вреени суток, прошу сильно не пинать, но на изучение вопроса просто нет времени. Сайт нужно...

Каптча для формы обратной связи
Всем доброго дня. Сделал на своем сайте http://220el.ru, форму обратной связи на каждой...

Добавление второй формы для обратной связи
В общем такое дело. Понадобилась мне обратная связь на сайт , я верстальщик не программист поэтому...


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

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

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