Как сделать форму для отправки данных

Как сделать форму для отправки данных
Как сделать форму для отправки данных
Как сделать форму для отправки данных
Как сделать форму для отправки данных

Форма отправки почтовых сообщений с сайта.

Автор: Андрей Краснокутский

Дата: 2012-06-04

Обновлено 12.12.2015 г.

Форма отправки почтовых сообщений с сайта с проверкой введенных данных.Несмотря на то, что тема отправки почтовых сообщений прямо со страниц сайта уже достаточно избита, но судя по письмам, которые я получаю от посетителей своего сайта, делаю вывод, что у многих еще имеются пробелы знаний в этих вопросах.

Итак, в этом уроке мы научимся делать форму отправки почтовых сообщений со страниц сайта с проверкой на правильность ввода данных. Т.е. если какое то поле формы будет не заполнено, то скрипт выдаст ошибку и сообщит об этом посетителю. Пример работы такой формы Вы можете увидеть здесь. Если Вы заполните эту форму и нажмете кнопку: Отправить сообщение, то я получу Ваше послание.

Преимущество такой отправки сообщений очевидны:

1. Вам не нужно "светить в Интернете" свой почтовый адрес, а значит он не попадет к спамерам.

2. Если посетитель хочет задать Вам вопрос или что-то спросить ему не нужно, копировать адрес электронной почты, открывать свой почтовый клиент, писать сообщение и т.д. Посетитель быстро заполнит в форме нужные данные и отправит Вам сообщение.

3. При такой организации обратной связи с посетителями, вероятность доставки Вам сообщения почти 100%, особенно если почтовый адрес привязан к вашему домену. Ведь из длинной почтовой цепочки исключаются промежуточные узлы. А значит надежность доставки почты резко повышается.

Можно насчитать еще много плюсов, но давайте приступим к созданию такой формы.

Как создать форму отправки сообщений?

Как правило подобные скрипты состоят из двух частей и код расположен в двух разных файлах:

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

Первую часть скрипта мы выносим в отдельный файл и назовем его: mail.php. В этом файле будет располагаться форма ввода данных. Имя файла mail.php я взял условно, Вы можете назвать этот файл как угодно. Это файл может иметь и другое расширение, например .html .

Для обращения посетителей сайта к этому файлу, обычно делают простую ссылку: Написать автору сайта, Отправить сообщение или что нибудь в этом роде. Когда посетитель кликает по такой ссылке он попадает на отделную страницу с формой в которую нужно ввести данные (информацию) для отправки сообщения.

Итак, создаете новый файл, присвойте ему имя: mail.php или mail.html и вставляете в него код Листинга 1.

Листинг 1

<table width="90%" border=0 align="center" class="td_border">
<tr>
<td bgcolor='#2275AD'><p align="center" class="title">Для отправки сообщения автору сайта используйте следующую форму:</td>
</tr>
<tr align="center" valign="top">
<tr>
<td bgcolor='#F6F6F6'>
<form action='mail2.php' method='POST' name='form' target='_blank'>
<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше имя:<br>
<input name='name' type='text' size='30'></p>
<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваш e-mail:<br>
<input name='email' type='text' size='30'></p>
<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше сообщение:<br>
<textarea name='mess' rows='5' cols='50'></textarea>
<p><input name='submit' type='submit' style='font-family: Verdana; font-size: 8pt; color: #ffffff; background-color: #6699cc; font-weight: bold;' value='Отправить сообщение'>

<input name='Reset' type='reset' style='font-family: Verdana; font-size: 8pt; color: #ffffff; background-color: #6699cc; font-weight: bold;' value='Очистить форму'></p>

</form>
</td>
</tr>
</table>

Это самая простая форма, состоящая всего из 3-х полей для ввода данных. Эти поля я назвал: Ваше имя, Ваш e-mail, Ваше сообщение. При необходимости количество полей можно увеличить.

Первых два поля: Ваше имя, Ваш e-mail, описываются тегами:

<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше имя:<br>
<input name='name' type='text' size='30'></p>

но каждому из них присваивается свое имя, которое называетмя идентификатор: name='name' и name='email' соотвественно.

Третье поле для ввода сообщения описано тегами:

<p style='font-family: Verdana; font-size: 8pt; color: #000000; font-weight: bold;'>Ваше сообщение:<br>
<textarea name='mess' rows='5' cols='50'></textarea>

Данное поле имеет идентификатор: name='mess'.

И естественно имеется две кнопки: Отправить сообщение и Очистить форму.

Данным (информации), которые посетитель заносит в форму, присваиваются соотвествующие идентификаторы: name, email и mess, запоминайте - это важно!

Для удобства оформления вся форма помещена в обычную таблицу, внешний вид, которой можно оформить с помощью таблиц стилей CSS, у меня это класс: class="td_border", его я здесь не привожу, при необходимости допишите сами, на свой вкус.

Файл обработчик.

Вторая часть скрипта состоит из файла обработчика: mail2.php, в который методом POST передаются все данные с соответствующими идентификаторами: name, email и mess. Здесь эти данные помещаются в переменные: $name, $email, $mess.

Создаем файл mail2.php и прописываем в него код Листинга 2:

Листинг 2

<?php

$name = $_POST['name'];
$email = $_POST['email'];
$mess = $_POST['mess'];

$REMOTE_ADDR = $_POST['REMOTE_ADDR'];

if (isset ($name))
{
$name = substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo "<center><b>Не указано имя !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$name = "не указано";
}

if (isset ($email))
{
$email = substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Не указан e-mail !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$email = "не указано";
}

if (isset ($mess))
{
$mess = substr($mess,0,1000); //Не может быть более 1000 символов
if (empty($mess))
{
echo "<center><b>Сообщение не написано !!!<p>";
echo "<a href=mail.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else
{
$mess = "не указано";
}

$i = "не указано";
if ($name == $i AND $email == $i AND $mess == $i)
{
echo "Внимание! Произошла ошибка! Вы не заполнили поля сообщения!";
exit;
}

$to = "";
$subject = "Сообщение с сайта LuksWeb.ru";
$message = "Имя пославшего письмо: $name .\nЭлектронный адрес: $email\nСообщение: $mess .\nIP-адрес: $_SERVER[REMOTE_ADDR]";
mail ($to,$subject,$message,"Content-type:text/plain; charset = windows-1251") or print "Не могу отправить письмо !!!";
echo "<center><b>Спасибо за отправку Вашего сообщения. <br><br> Для меня это очень важно! <br><br> В ближайшее время Вы обязательно получите ответ.";
exit;
?>

В этом файле происходит проверка введенных посетителем сайта в форму данных, и последующая отправка сообщения по указанному адресу электронной почты.

При незаполненных полях или заполненных некорректно, скрипт вернет посетителю сообщение с указанием конкретной причины.

Обращаю Ваше внимание, что файл: mail2.php обязательно должен иметь расширение .php , т.к. отправка сообщения осуществляется с помощью функции mail PHP.

И естественно ваш Хостинг, должен поддерживать работу PHP. Это в основном касается бесплатных хостингов, хотя в последнее время даже на бесплатных Хостингах практически везде установлен PHP.

В коде Листинга 2 все просто, исправьте все значения, выделенные красным под свои требования, а именно:

  • пропишите свой адрес электронной почты, на который будут отправляться сообщения (переменная $to);
  • исправьте тему сообщения (переменная $subject);
  • обратите внимание на кодировку (charset = windows-1251). Кодировку пропишите ту, которая используется на вашем сайте. В русскоязычном интернете кодировка может быть: "utf-8" или "windows-1251". Если ошибетесь с кодировкой текст в письме будет отображаться неправильно (кракозябрами).

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

Всего Вам доброго.

 

Читайте также:

Как создать в Интернете свой высокодоходный Бизнес?

Заборы из металлического штакетника (евроштакетник)

Видео Курс по созданию сайтов: "Сайт от А до Я"

Газонные ограждения (невысокие заборы)

Как сделать электронную книгу в EXE формате. Практическое руководство

Автомобильный навес арочный, модель № НА-06

 

Просмотров: 94927


Спасибо за урок. Вот правду говорят, что все приходит вовремя. Сегодня собиралась искать в инете как сделать форму контакта для сайта, причем независимую. Я так понимаю, что эта подойдет.

Хороший урок! Спасибо!

Спасибо Андрей, хороший урок.

Благодарствую, думаю пригодится

Большое спасибо!

Вам пишет Савин Дмитрий Александрович (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 = ", , ";

А как сделать чтобы после отправки сообщения была переадресация на другую страницу?

есть $to = ""; вопрос: если необходимиа отправка на 2-а адреса! один из адресов в виде $to = "$email"; другими словами функционал "посоветовать другу" с дублированием послания на мной заданную почту. Спасибо.

У меня почему-то форма обратной связи не работает, причём, никакая не работает. Делает вид, что сообщение отправлено, но на почту оно не приходит.

Здравствйте! Обьясните пожалуйста, почему не работает на хостинге, пишет: "Не могу отправить письмо". А на lockalhost на Денвере работает нормально. В чём проблема?...

Спасибо

почему у меня не одна формнеа не пашет пишет

Большое спасибо. Очень все просто и доступно. Я использовал Ваш пример на сайте gosdogovor.ru. Только немного подточил дизайн под себя и состав полей: http://www.gosdogovor.ru/easuzcon.html. Еще раз спасибо.

Ребят, если вы пытаетесь отправить сообщение с вашего локального сервера, тобишь с сайта еще не размещенном в инете, - у вас ничего не получится. Разместите на каком-то хостинге, и будет вам счастье)

Андрей, а как сделать так стобы при нажатии на кнопку отправлялось сообщение с определенным текстом на определенный адрес? Помогите пожалуйста:

как быть если хостинг не поддерживает php

В наше время очень мало хостингов не поддерживает PHP. Но если это денйствительно так, в таком случае меняйте такой хостинг.

привет

А как эту форму вставить в сайт?

Кодировка сайта utf-8. В файле mail2.php указываю кодировку utf-8, но на сайте все равно отображаются кракозябры... Не пойму что нужно сделать. Нужно ли явно указать кодировку в mail.html

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

проблемы с кодировкой Кодировка сайта utf-8. В файле mail2.php указываю кодировку utf-8, но на сайте все равно отображаются кракозябры... Не пойму что нужно сделать

Владимир. Обратите внимание еще и на кодировку, которая стоит в настройках вашего хостинга.

Когда-то давно очень долго мучался... потом бросил эти попытки запустить отправку сообщений с сайта! Тут вернулся к этой теме... и вы не поверите! С полпинка все заработало! Огромное вам спасибо! И удачи!

Подскажите как поставить простенькую капчу, хотя бы как при отправке данного сообщения! Заранее спасибо!

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

у меня тоже не работает перебрасывает на файл обработчик mail2.php и все тишина ! писем нет !

А как добавить антиспам?

Огромное спасибо! Все получилось с первого раза, только сменил кодировку! Отличный урок для начинающих!)

Андрей,воспользовалась вашей подсказкой по отправке сообщения с сайта, но! сообщение отправляется, а на почту не приходит? м.б. связано с браузером или файлом php, как и у других ваших абонентов?

ОЧЕНЬ Классно и полезно!)) Спасибо огромное))

Не понятно,в какую папку нужно поместить эти два разных файла, скажем, на Гудзоне. Помещаю в корневой директории-не работает :(

Сергей, эти два файла можете помещать в любую папку. У меня они лежат в карневой директории. Ищите ошибку.

Огромное спасибо. легкий код, все понятно. Но есть НО... в форму можно ввести что угодно, в электронный адрес можно написать йцуенгг и сообщение отправляется. как прописывается проверка на этот случай?

У меня форма по вашему коду прекрасно работает. Но форма размещена на нескольких страницах, и я бы хотел, чтобы была пометка, с какой страницы пришло сообщение. Поможете? Заранее спасибо.

Буду пробовать, но думаю, это то, что я искал

спасибо!

Здравствуйте, спасибо большое за такую полезность. Вот возник вопрос: У нас, как оказывается не поддерживается php, а задача такого рода очень актуальна. Можно ли адаптировать данное решения под asp? Спасибо.

Елена, под asp этот скрипт работать не будет, т.к. отправка сообщения осуществляется с помощью функции mail PHP

Спасибо большое за оперативный ответ! Очень жаль, что мне это не подходит. А не подскажете где можно взять аналогичные материалы, только под asp. Очень нужно...

не подскажите почему отображает такой результат? Не могу отправить письмо !!! Спасибо за отправку Вашего сообщения. Для меня это очень важно! В ближайшее время Вы обязательно получите ответ. mail1 в html записан, сайт лежит на бесплатном хосте! В чем может быть проблема!?

Taras, скорее всего проблема в бесплатном хостинге. Для работы скрипта, нужно чтобы на хостинге был PHP и работала функция MAIL

Алексей Ж, пропишите нужную кодировку в файле .htaccess , например так: AddDefaultCharset WINDOWS-1251 . Есть и другие места где можно принудительно указать кодировку, но надо знать что у за сайт и на чем он сделан.

Андрей, спасибо Вам огромное за статью! Это именно то, что я искал. Просто и понятно, всё объяснено по пунктам.

Если установить кодировку windows-1251, то сообщение, когда приходит на e-mail, отображается крякозябрами. Если установить кодировку UTF-8, то текст сообщения отображается нормально, но заголовки - знаками вопроса. Остаётся 1 вариант - UTF-8, а заголовки писать латиницей, например, Kto, E-mail, Text. Ещё раз спасибо автору за очень полезную тему!

Регина, не увидевши что Вы прописали в коде помочь ничем вам не смогу

Добрый день, пытаюсь добавить на сайт форму для получения скидки, форма есть, Спасибо Вам. Но при нажатии кнопки "Отправить" ничего не происходит(( помогите пожалуйста, сайт на хостинге бегет)

Большое спасибо. Всё работает - пока на ДЕНВЕРЕ. Когда будет реальный сайт, надеюсь и там будет.

Андрей, спасибо! Всё работает(на реальном хостинге). Мой опыт по php минимален.

В данном примере при не полностью заполненной форме содержимое сбрасывается. И приходится все вводить заново.

Вот я прочитал вашу статью и сделал всё как в статье, но при нажатии на кнопку "отправить" вылезает текс, который я скопировал с вашего сайта в файл "mail.php". Может я сделал что-то не так? Вот посмотрите как я сделал: https://yadi.sk/d/Cwp73LW4xLNsd . Для обратной связи вот вам мой e-mail: Зарание спасибо.

это четвертая попытка сделать форму увенчалась успехом. Респект автору, еще бы капча была прикручена....

MAN SANI LOVE

Как говорится: "Реально тема!" Автору респект :)

Здравствуйте! Всё сделал по инструкции закачал 2 файла mail.php и mail2.php При отправке выходит: Объект не найден! Запрошенный URL не найден на этом сервере. В чем может быть проблема?!

Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных Как сделать форму для отправки данных

Похожие статьи:




Бразильский маникюр технология выполнения




Водяной коллекторы для своими руками схема




Как сделать гляссе без кофемашины




Шуточные поздравление мужчине в 60 лет




Схемы вышивки крестом крест пасхальный