Привет, Друзья! Хочу представить вашему вниманию универсальный скрипт отправки данных из форм на email . Скрипт идеально подойдет для сайтов типа Landing Page , сайтов визиток и т.д. Наш скрипт Формы обратной связи выделяется среди массы остальных скриптов в интернете тем, что имеет возможность подключения неограниченного количества форм с разными полями на одной странице и способен отправлять письма нескольким получателям .
Итак. Давайте приступим. Начнем пожалуй с возможностей скрипта.
О остальных файлах давайте подробнее:
feedback.js
- основной файл скрипта, отвечает за AJAX отправку формы
.
jquery.arcticmodal.js,
jquery.arcticmodal.
- обеспечивают возможность вывода форм в модальном окне.
jquery.jgrowl.js,
jquery.jgrowl.css
- позволяют выводить уведомления на странице (блоки в верхнем углу страницы).
Вот мы и разобрались с основными настройками подключения нашего скрипта отправки форм на E-mail. Давайте теперь заглянем во внутрь и разберемся с настройкой полей, уведомлений да и всего остального, что там есть.
Пример настроек для одной формыНастройки всех форм хранятся в файле feedback\index.phpПомните я говорил о обязательном атрибуте name=""
?
Пример html кода для наглядности
Теперь давайте разберемся с массивами и для чего они нужны.
$form["form-1"] = array();
$form["form-2"] = array();
и т.д.
Это основные массивы для каждой новой формы, содержат в себе:
Пример: (feedback/tpl/form-1.tpl
)
Заголовок в теле письма | |
%%name.title%% | %%name.value%% |
%%tell.title%% | %%tell.value%% |
name
, tell
и т.д. - Это атрибуты (name="") полей которые заполняет пользователь.
title
- Название элемента формы, которое задается в массиве настроек элементов формы.
value
- Значение элемента формы.
На сегодня пока все, но скрипт конечно же не идеален, так что комментарии и описания багов приветствуются и в следующих версиях будут исправлены.
P.S. Скрипт разработан командой
Обновлено 12.12.2015 г.
Несмотря на то, что тема отправки почтовых сообщений прямо со страниц сайта уже достаточно избита, но судя по письмам, которые я получаю от посетителей своего сайта, делаю вывод, что у многих еще имеются пробелы знаний в этих вопросах.
Итак, в этом уроке мы научимся делать форму отправки почтовых сообщений со страниц сайта с проверкой на правильность ввода данных . Т.е. если какое то поле формы будет не заполнено, то скрипт выдаст ошибку и сообщит об этом посетителю. Пример работы такой формы Вы можете увидеть . Если Вы заполните эту форму и нажмете кнопку: Отправить сообщение , то я получу Ваше послание.
Преимущество такой отправки сообщений очевидны:
1. Вам не нужно "светить в Интернете" свой почтовый адрес, а значит он не попадет к спамерам.
2. Если посетитель хочет задать Вам вопрос или что-то спросить ему не нужно, копировать адрес электронной почты, открывать свой почтовый клиент, писать сообщение и т.д. Посетитель быстро заполнит в форме нужные данные и отправит Вам сообщение.
3. При такой организации обратной связи с посетителями, вероятность доставки Вам сообщения почти 100%, особенно если почтовый адрес привязан к вашему домену. Ведь из длинной почтовой цепочки исключаются промежуточные узлы. А значит надежность доставки почты резко повышается.
Как создать форму отправки сообщений?Как правило подобные скрипты состоят из двух частей и код расположен в двух разных файлах:
Первую часть скрипта мы выносим в отдельный файл и назовем его: mail.php . В этом файле будет располагаться форма ввода данных. Имя файла mail.php я взял условно, Вы можете назвать этот файл как угодно. Это файл может иметь и другое расширение, например .html .
Для обращения посетителей сайта к этому файлу, обычно делают простую ссылку: Написать автору сайта , Отправить сообщение или что нибудь в этом роде. Когда посетитель кликает по такой ссылке он попадает на отделную страницу с формой в которую нужно ввести данные (информацию) для отправки сообщения.
Итак, создаете новый файл, присвойте ему имя: mail.php или mail.html и вставляете в него код Листинга 1 .
Листинг 1
|
Это самая простая форма, состоящая всего из 3-х полей для ввода данных. Эти поля я назвал: Ваше имя , Ваш e-mail , Ваше сообщение . При необходимости количество полей можно увеличить.
Первых два поля: Ваше имя , Ваш e-mail , описываются тегами:
Ваше имя:
но каждому из них присваивается свое имя, которое называетмя идентификатор : name="name" и name="email" соотвественно.
Третье поле для ввода сообщения описано тегами:
Ваше сообщение:
Данное поле имеет идентификатор: name="mess" .
И естественно имеется две кнопки: Отправить сообщение и Очистить форму .
Данным (информации), которые посетитель заносит в форму, присваиваются соотвествующие идентификаторы: name , email и mess , запоминайте - это важно!
Для удобства оформления вся форма помещена в обычную таблицу, внешний вид, которой можно оформить с помощью , у меня это класс: class="td_border" , его я здесь не привожу, при необходимости допишите сами, на свой вкус.
Файл обработчик.Вторая часть скрипта состоит из файла обработчика: mail2.php , в который методом POST передаются все данные с соответствующими идентификаторами: name , email и mess . Здесь эти данные помещаются в переменные: $name , $email , $mess .
Создаем файл mail2.php и прописываем в него код Листинга 2 :
Листинг 2
$name = $_POST["name"]; $REMOTE_ADDR = $_POST["REMOTE_ADDR"]; if (isset ($name)) "; if (isset ($email)) "; if (isset ($mess)) "; $i = "не указано"; $to = "admin@сайт
"; |
В этом файле происходит проверка введенных посетителем сайта в форму данных, и последующая отправка сообщения по указанному адресу электронной почты.
При незаполненных полях или заполненных некорректно, скрипт вернет посетителю сообщение с указанием конкретной причины.
Обращаю Ваше внимание, что файл: mail2.php обязательно должен иметь расширение .php , т.к. отправка сообщения осуществляется с помощью функции mail PHP .
И естественно ваш Хостинг, должен поддерживать работу PHP. Это в основном касается бесплатных хостингов, хотя в последнее время даже на бесплатных Хостингах практически везде установлен PHP.
В коде Листинга 2 все просто, исправьте все значения, выделенные красным под свои требования, а именно:
Вот собственно говоря и все, теперь осталось закачать файлы: mail.php и mail2.php и на вашем сайте появится удобная форма для отправки сообщений.
Комментарии к этой статье (уроку):
Спасибо за урок. Вот правду говорят, что все приходит вовремя. Сегодня собиралась искать в инете как сделать форму контакта для сайта, причем независимую. Я так понимаю, что эта подойдет.
Хороший урок! Спасибо!
Спасибо Андрей, хороший урок.
Благодарствую, думаю пригодится
Вам пишет Савин Дмитрий Александрович (SAVIN DMITRY ALEXANDROVICH) ,хочу узнать все по подробнее о формах в CSS , я мало обэтом осведомлен: поподробнее о свойстве action , как я знаю action это ссылка на документ, куда отсылается запрос данных либо сами данные с формы, или что-то в этом роде.method="post" обработка данных в наибольших размерах нежели чем get и т. д.Пожалуйста подробнее о формах у меня в них почти просак.
Здравствуйте Андрей! С уважением к Вам Ахмад. Вот я тоже хочу на сайте создать "Добавить Ваш комментарий" чтобы посетители могли оставить свои Отзывы.Какой код писать мне? Спасибо Вам мне понравилось.Ахмад
Красавчик! очень полезная инфа!
Полезно, то полезно, но н запускаетсяю. После заполнения формы выдается листинг mail2.php
Полезно, то полезно, но не запускается. После заполнения формы выдается листинг mail2.php
Все хорошо работает, только кнопочки не получаются объемными как у автора. Может кто-то подскажет, как сделать объемные кнопочки? Автору спасибо!
а у меня не работает. точнее работает на половину. письмо отправляет, но пустое. данные из майл1 не переходят в майл2
На маил не приходит.В чем подвох? Я не пойму как он без логина и пароля чегонибуть отправит. Это что сервер почтовый типа? Простая форма и все
Спасибо за форму! Работает! У кого не работает - внимательно выполняйте каждый шаг. У меня тоже не сразу всё получилось. Андрей, ещё раз спасибо!
Помогите плиз, форму вставила всё вроде бы Ок, но на почту которую я указала сообщение не доходит, хотя и пишется сообщение отправлено...
Подскажите, а как сделать так, чтоб после отправки/неудачной отправке письма не открывалось новое окно а писалость в старом?
Андрей. Я понимаю, что обработчик вызывается. Я пока не особо в php разбираюсь. Но мне вот чего бы хотелось достич: страница с почтовой формой одна,т.е. после нажатия "Отправить сообщение" новое окно не открывается, а изменяется текущая страница. Т.е я так понимаю она динамическая. Самой пока не додуматься как сделать такое, поэтому спрашиваю совета.
Андрей, подскажите пожалуйста, форма замечательно работает в хроме, а вот с эксплорером проблема. Не доставляются письма и не выводятся сообщения об ошибках или отправке. В чем тут дело? Заранее спасибо
Классный урок! Спасибо!
Спасибо. Всё отлично работает)
в коде нет закрывающих тегов /p. Почему?
Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in E:Roomsu362571transport-online.netwwwmail.php on line 66 Не могу отправить письмо!!! Во - как получается Как быть??
не могу разобраться с кодировкой. Если прописывать windows-1251 - текст скрипта в сообщении нормальный, сам текст сообщения на почту приходит крокозяброй. а если ставить utf-8 - текст скрипта в сообщении на почте - знаки вопроса, а текст сообщения из формы - нормальный. как сделать, что б и то и то нормальным было?
у меня неработает, но сайт еще не на хостинге, когда помещу-будет?
Все работает, спасибо за скрипт! Поскажите пожалуйста как сделать что бы при нажатии кнопки отправить не открывалась новая страница с обработчиком. Что бы сайт оставался на той странице где и был до нажатии кнопки отправить?
а как сделать поле ввода майл выше?
Если необходимо отправить письма на несколько адресов, просто через запятую дописываете нужные адреса вот так: $to = "admin@сайт, [email protected], [email protected]";
А как сделать чтобы после отправки сообщения была переадресация на другую страницу?
есть $to = "admin@сайт"; вопрос: если необходимиа отправка на 2-а адреса! один из адресов в виде $to = "$email"; другими словами функционал "посоветовать другу" с дублированием послания на мной заданную почту. Спасибо.
У меня почему-то форма обратной связи не работает, причём, никакая не работает. Делает вид, что сообщение отправлено, но на почту оно не приходит.
Здравствйте! Обьясните пожалуйста, почему не работает на хостинге, пишет: "Не могу отправить письмо". А на lockalhost на Денвере работает нормально. В чём проблема?...
почему у меня не одна формнеа не пашет пишет
Большое спасибо. Очень все просто и доступно. Я использовал Ваш пример на сайте gosdogovor.ru. Только немного подточил дизайн под себя и состав полей: http://www.gosdogovor.ru/easuzcon.html. Еще раз спасибо.
Ребят, если вы пытаетесь отправить сообщение с вашего локального сервера, тобишь с сайта еще не размещенном в инете, - у вас ничего не получится. Разместите на каком-то хостинге, и будет вам счастье)
Андрей, а как сделать так стобы при нажатии на кнопку отправлялось сообщение с определенным текстом на определенный адрес? Помогите пожалуйста: [email protected]
На этом уроке мы познакомимся с функцией mail () , на примере создания формы обратной связи на PHP с последующей отправкой полученных данных на почту.
Для этого создадим два файла - forma.php и mail.php . В первом файлике будет находиться только форма с полями для ввода пользователем данных. Внутри тега form - кнопка "Отправить" и атрибут action , который ссылается на обработчик - mail.php , именно к нему обращаются данные из формы при нажатии кнопки "Отправить" . В нашем примере данные формы отправляются на веб-страницу с названием «/mail.php» . На этой странице прописан скрипт на PHP , который обрабатывает данные формы:
Данные формы отправляются методом POST (обрабатывается как $ _POST ). $ _POST - это массив переменных, переданных текущему скрипту через метод POST .
Ниже вы видите содержимое файла forma.php , поля которой заполняет сам пользователь на каком-нибудь веб-сайте. Все поля для ввода данных обязательно должны иметь атрибут name , значения мы прописываем сами, исходя из логики.
Форма обратной связи на PHP с отправкой на почту
Форма обратной связи на PHP
Оставьте сообщение:
Ваше имя:
E-mail:
Номер телефона:
Сообщение:
Текстовая область может содержать неограниченное количество символов-->
Так форма визуально выглядет в браузере.
Далее пишем код для файла mail.php . Придумываем сами имена для переменных. В PHP переменная начинается со знака $ , а затем имя переменной. Текстовое значение переменной заключается в кавычки. С помощью переменных на емайл администратора передается содержимое формы, просто подставив в квадратные скобки имя элемента формы - значение name .
Таким образом данные из массива $_POST будут переданы соответствующим переменным и отправлены на почту при помощи функции mail . Давайте заполним нашу форму и нажмем кнопку отправить. Не забудьте указать ваш е-майл. Письмо пришло моментально.
Одной из самых востребованных функций на сайте является форма заявки или заказа, данные из которой отправляются на почту владельцу сайта. Как правило такие формы являются простыми и состоят из двух трех полей для ввода данных. Как же создать такую форму заказа? Здесь потребуется использование языка разметки HTML и языка программирования PHP.
Язык разметки HTML сам по себе несложен, нужно всего лишь разобраться в том как и где ставить те или иные теги. С языком программирования PHP все немного сложнее.
Для программиста создать такую форму не составит труда, а вот HTML верстальщику может показаться сложным некоторые действия.
Создаем форму отправки данных в htmlПервая строка будет следующей
Это очень важный элемент формы. В нем мы указываем каким способом будут передаваться данные и какому файлу. В данном случае все передачется методом POST файлу send.php. Программа в этом файле соответственно должна принять данные, они будут содержаться в post массиве, и отправить их на указанный email адрес.
Вернемся к форме. Вторая строка будет содержать поле для ввода ФИО. Имеет следующий код:
Тип формы text, то есть пользователь сможет ввести или скопировать сюда текст с клавиатуры. Под параметром name содержится название формы. В данном случае это fio, именно под таким именем будет передаваться все, что пользователь введен в данноу поле. Параметр placeholder указывает на то, что будет записано в этом поле в виде пояснения.
Следующая строка:
Здесь практически все то же самое, но имя для поля указано email, а пояснении указано, чтобы пользователь в эту форму ввел свой адресс электронной почты.
Следующей строкой будет кнопка "отправить":
И последней строкой в форме будет тэг
Теперь соберем все вместе.
Теперь сделаем так, чтобы поля в форме стали обязательными для заполнения. Имеем следующий код:
Это будет файл с именем send.php
В файле на первом этапе нужно принять данные из пост массива. Для этого создаем две переменные:
$fio = $_POST["fio"];
$email = $_POST["email"];
Перед названиями переменных в php ставиться знак $, в конце каждой строки ставиться точка с запятой. $_POST это массив в который передаются данный из формы. В форме html при этом указан метод отправки method="post". Так, приняты две переменные из формы html. Для целей защиты своего сайта нужно провести эти переменные через несколько фильтров - функций php.
Первая функция преобразует все символы, которые пользователь попытается добавить в форму:
При этом новые переменные в php не создаются, а используются уже имеющиеся. Что сделает фильтр, он преобразует символ "