Помощник
|
Форма обратной связи, Настраиваю - не работает |
Matt
|
Сообщение
#1
|
||
|
|
||
|
|||
Matt
|
Сообщение
#2
|
|
Всё, разобрался! Так и не понял, почему сначала не отображалось).
Но теперь другой вопрос, как сделать, чтобы полсе вывода сообщения "Письмо отправлено" пользователь автоматом возвращался назад. -------------------- |
|
|
ZiTosS |
7.11.2010, 15:14;
Ответить: ZiTosS
Сообщение
#3
|
|
Matt, ещё бы она работала, почитай про функции и параметры функций
Функция mail(): bool mail (string to, string subject, string message [, string additional_headers [, string additional_parameters]]) mail() автоматически отправляет сообщение message получателю to. Можно специфицировать несколько получателей, разделив запятой адреса в to. С помощью этой функции можно высылать Email с присоединением/attachment и содержимое специальных типов. Это делается через MIME-кодировку - см. дополнительно эту статью о Zend или PEAR Mime Classes. to - адресат, кому отправляем письмо subject - тема письма message - сообщение письма (текст ил может быть HTML) additional_headers (необязательный параметр) - определение заголовков письма (например, нужен для прикрепления attach или отправки письма как HTML) additional_parameters (необязательный параметр) - можно использовать для передачи дополнительных параметров программе, сконфигурированной для использования при отправке почты установкой конфигурации и др. Разберем твои примеры: 1) было [php]mail($your_email, $title, $message, $headers)[/php] отправляем по email $your_email тема письма $title сообщение письма $message заголовки письма $headers 2) стало [php]mail($your_email, $title, $poroda, $message, $headers)[/php] отправляем по email $your_email тема письма $title сообщение письма $poroda заголовки письма $message различные параметры для сервера $headers Как видишь, у тебя в функцию отправляется в качестве параметров не то что нужно. Заголовки имеют чётко определенный формат, и если ты пошлешь вместо них какую-либо лабуду, как у тебя - посылается $poroda, то письмо не отправится. Если ты хочешь добавить к сообщению ещё и породу кошки или ещё кого-либо надо делать так: [php]<?php $your_email = "-----@mail.ru"; if (isset($_POST['autor'])) { $autor = $_POST['autor']; if ($autor == '') { unset($autor);} } if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} } if (isset($_POST['title'])) { $title = $_POST['title']; if ($title == '') { unset($title);} } if (isset($_POST['poroda'])) { $poroda = $_POST['poroda']; if ($poroda == '') { unset($poroda);} } if (isset($_POST['message'])) { $message = $_POST['message']; if ($message == '') { unset($message);} } if (empty($autor) or empty($email) or empty($title) or empty($poroda) or empty($message)) { die ("Не все поля заполнены! <a href=\"java script:history.back()\">Назад</a>"); } if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) { die ("Неверно введен е-mail! <a href=\"java script:history.back()\">Назад</a>"); } $autor = addslashes($autor); $email = addslashes($email); $title = addslashes($title); $poroda = addslashes($poroda); $message = addslashes($message); $message = "порода .... - {$poroda} Сообщение:" . $message; $headers = "Content-type: text/html; charset=UTF-8 \r\n"; $headers .= "From: $autor <$email>\r\n"; if (mail($your_email, $title, $message, $headers)) { echo ("Письмо отправлено!"); } else {echo ("Ошибка, письмо не удалось отправить!");} ?>[/php] |
|
|
ZiTosS |
7.11.2010, 15:23;
Ответить: ZiTosS
Сообщение
#4
|
|
Matt, почитай первое сообщение
Всё, разобрался! Так и не понял, почему сначала не отображалось). Но теперь другой вопрос, как сделать, чтобы полсе вывода сообщения "Письмо отправлено" пользователь автоматом возвращался назад. А по поводу данного вопроса: Возникает вопрос - а куда назад? Если на четко определенную страницу, то можно либо meta refresh либо в начале кода поставить ob_start() а в конце использовать header location Если пользователь может отправлять письма не только с одной страницы, к примеру mail.php, а надо его вернуть на ту страницу, откуда он отправил, то: Элемент $_SERVER['HTTP_REFERER']
В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу. |
|
|
Matt
|
Сообщение
#5
|
|
Вопрос с редиректом решил, включив вот такую штуку: [php]<?php
header('Refresh: 3; URL=http://------.html'); echo 'Через 3 сек. вы будете перенаправлены на новую страницу.'; exit; ?>[/php] Но вот незадача, поправил, как ты сказал, и сообщение нормально выводится, всё работает, но не отображается тема и адрес отправителя письма. -------------------- |
|
|
ZiTosS |
7.11.2010, 16:04;
Ответить: ZiTosS
Сообщение
#6
|
|
Matt, код в студию
|
|
|
Matt
|
Сообщение
#7
|
|
[php]<?php
$your_email = "-----@mail.ru"; if (isset($_POST['autor'])) { $autor = $_POST['autor']; if ($autor == '') { unset($autor);} } if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} } if (isset($_POST['title'])) { $title = $_POST['title']; if ($title == '') { unset($title);} } if (isset($_POST['poroda'])) { $poroda = $_POST['poroda']; if ($poroda == '') { unset($poroda);} } if (isset($_POST['message'])) { $message = $_POST['message']; if ($message == '') { unset($message);} } if (empty($autor) or empty($email) or empty($title) or empty($poroda) or empty($message)) { die ("Не все поля заполнены! <a href=\"java script:history.back()\">Назад</a>"); } if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email)) { die ("Неверно введен е-mail! <a href=\"java script:history.back()\">Назад</a>"); } $autor = addslashes($autor); $email = addslashes($email); $title = addslashes($title); $poroda = addslashes($poroda); $message = addslashes($message); $message = "порода - {$poroda} Сообщение:" . $message; $headers = "Content-type: text/html; charset=UTF-8 \r\n"; $headers .= "From: $autor <$email>\r\n"; if (mail($your_email, $title, $message, $headers)) { echo ("Письмо отправлено! "); } else {echo ("Ошибка, письмо не удалось отправить! ");} ?><?php header('Refresh: 3; URL=http:----.html'); echo 'Через 3 сек. вы будете перенаправлены на новую страницу.'; exit; ?>[/php] -------------------- |
|
|
ZiTosS |
7.11.2010, 16:34;
Ответить: ZiTosS
Сообщение
#8
|
|
Matt, аа до этого всё было нормально, и где ты письма просматриваешь?
|
|
|
Matt
|
Сообщение
#9
|
|
Нашёл ещё одну причину - кодировка. Поэтому русское имя отправителя и не приходило. Поправил на UTF-8 на Windows-1251, но в итоге появились всякие левые символы. Как же быть?
-------------------- |
|
|
ZiTosS |
7.11.2010, 16:50;
Ответить: ZiTosS
Сообщение
#10
|
|
Matt, зачем ты письмо пытаешься отправить в UTF-8? Да и вообще тебе нужен HTML-формат письма? Обычно письма отправляются в koi8r делается это так:
[php]$title = convert_cyr_string($title, 'w', 'k');[/php] А все дело в том, что для почты у нас принято использовать кодировку koi8-r, а для веба - win-1251 (ansi) - так, и выходит - мы шлем с сайтов в win-1251, а почтовые программы открывают его как koi8-r... k koi8-r w win-1251 i iso8859-5 a x-cp866 d x-cp866 m x-mac-cyrillic |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Принимаю заказы на копирайтинг, рерайтинг. Стабильно работаю, всегда на связи Нужен автор текстов, копирайтер? Обращайтесь |
14 | KriptoFin | 8015 | 22.9.2020, 18:07 автор: mrSana |
|
Нужен простой лендинг с формой обратной связи | 10 | Kuzzma | 2561 | 11.9.2020, 21:33 автор: Kuzzma |
|
Настройка каптчи на форму обратной связи | 3 | woolf | 2030 | 9.4.2019, 17:21 автор: bobur |
|
Спам через форму обратной связи на сайте | 14 | Evgeniy3200 | 8082 | 15.5.2017, 20:53 автор: samvel32453 |
|
Требуется доработка формы заказа/обратной связи | 0 | Dinamitt | 1796 | 22.2.2017, 22:02 автор: Dinamitt |
Текстовая версия | Сейчас: 29.3.2024, 3:33 |