Меню

Contact php как настроить

Форма обратной связи для сайта | PHP

Форму связи можно поместить на страницу сайта «Контакты». Её просто сделать. Если принять предложенный CSS стиль, то форма будет «резиновой»:

Ниже представлены два варианта скрипта отправки почты: с Javascript и без

1. Форма связи без перезагрузки

  1. PHP вынесен в отдельный файл
  2. при нажатии клавиши F5 форма не будет отправлена снова
  3. после отправки формы страница не будет перезагружена
  4. проверка на правильность заполнения полей осуществляется не на стороне сервера
  5. не поддерживается IE8 и ниже (нужно дополнить код аналогами addEventListener() , preventDefault() и XMLHttpRequest или использовать вариант 2)

Файл contacts.html

Файл contacts.php

2. Форма связи без JavaScript

  1. в большинстве случаев расширение файла должно быть .php
  2. при нажатии клавиши F5 форма будет отправлена снова
  3. после отправки формы страница будет перезагружена
  4. проверка на правильность заполнения полей осуществляется не на стороне сервера

Файл contacts.php

Рекомендации к скрипту отправки почты

  1. нужно заменить свой@yandex.ru
  2. нужно заменить contacts.php на полный адрес, например, http://сайт.ru/папка/папка/contacts.php
  3. для того, чтобы добавить новое поле, нужно внести изменение в HTML, JavaScript и PHP код. Другими словами, добавить те же участки, что и для contactFF. Пример согласно описанию в комментарии 194 можно увидеть тут.

Почему письма не приходят

  1. письма от хостинга фильтруются и не попадают даже в папку «Спам»
  2. хостинг не имеет поддержки (не верно настроена или отключена) PHP-функции mail()

Что делать:

  1. создать файл «test.php» с содержимым
  2. чтобы письмо отправилось, перейти (открыть в окне браузера) на страницу «test.php»
  3. если спустя 20-30 минут письмо отсутствует в папках «Входящие» и «Спам», обратиться за разъяснениями в службу поддержки хостинга

205 комментариев:

Юлия Алешкина ДОброе утро! Большое спасибо за Ваш сайт и всю-всю полезную информацию!
Многое почерпнула и применила некоторые элементы.
Я не очень сильна в языке программирования, поэтому хотела спросить.
1. Если я правильно понимаю, ту часть кода, что обведена пунктирчиком, надо добавить в CSS, да?
2. А со второй частью что делать? ее куда надо добавить?
Я хотела сделать отдельную страничку для контактной формы и запуталась с нижним (вторым кодом) NMitra Доброе утро, это для Blogger не подойдёт. Вот здесь есть заметка http://www.elenagrishina.com/2013/08/contact-form-blogger.html Я код ещё толком не рассматривала, планирую в будущем статью написать. Юлия Алешкина Спасибо большое за ответ. Жаль, думала, что это как раз Вы для блоггера сделали.
Лену Гришину люблю и читаю. Попробую реализовать ее вариант.
Еще раз спасибо 🙂
NMitra Юлия, посмотрите http://shpargalkablog.ru/2014/01/feedback-form-blogger.html Анонимный Помогите пожалуйста с формой. Ввел код а css, и в html.
Сообщение не отправляет и при отправке показывает

Ваше сообщение получено, спасибо!
‘); $_POST[‘nameFF’] = $_POST[‘contactFF’] = $_POST[‘messageFF’] = »; > ?>

NMitra Там сложно что-то ни так сделать. Каков URL сайта? Анонимный этого уже нет. но сообщение приходит вот такое

п≤п╪я▐: п©п╡я▀п╟п©п╡п©
Email: suzaku_lan@mail.ru
п║п╬п╬п╠я┴п╣п╫п╦п╣: п╬я─п©п╬п©п╬я─я─п╦я─п╬п╦ NMitra Это мы уже проходили http://shpargalkablog.ru/2013/08/bell-site.html#c504048085270108536 . Приведите скрипт к виду:

mail («свой@yandex.ru«,
«заполнена контактная форма с «.$_SERVER[‘HTTP_REFERER’],
«Имя: «.$_POST[‘nameFF’].»\nEmail: «.$_POST[‘contactFF’].»\nСообщение: «.$_POST[‘messageFF’], «Content-type: text/html; charset=utf-8 \r\n»);
Анонимный Сделал так, но теперь сообщение на почту не приходит, хотя на сайте пишет что сообщение отправлено Анонимный почта mail.ru. Может в этом дело. Анонимный Вернул то, что было до отравления и вставил почту яндекса. Все работает. Но можно ли сделать так чтобы и на мейл ру приходило в правильной кодировке Анонимный Правда заметил, что на яндекс приходит через раз. NMitra Дополнила статью, попробуйте. Отпишитесь, пожалуйста, о результате. Не имею адреса на mail.ru, не могу проверить.

На Яндекс.почте не заметила проблем, хотя уже пачку писем поотправляла. Kirill Titov Не работает. После нажатия на «отправить» ничего не происходит. NMitra Свой адрес почты поставили?
Для Blogger другая форма http://www.blogger.com/profile/17317191596919797566 tohenson Подскажите. Если создать ещё одно поле (Например: «Ваш возраст»), то как можно добавить его содержимое в письмо ? NMitra «Имя: «.$_POST[‘nameFF’].»\nEmail: «.$_POST[‘contactFF’].

«Имя: «.$_POST[‘nameFF’].»\nВозраст: «.$_POST[‘vozrastFF’].»\nEmail: «.$_POST[‘contactFF’].

input type=»text» name=»vozrastFF» Марина Наташа! Добрый день! Теперь здесь вопросы)))
Код, который дан выше со стилями вместе нужно весь вставлять в страницу HTML или для скрипта PHP нужно тоже сделать отдельный файл и залить в корень сайта, как с формой Обратный Звонок?
Я уже писала вам в личку, но ничего у меня не вышло с отправкой, может быть именно в этом проблема, в отдельном файле?
и еще, я например хочу сделать на сайте несколько форм обратной связи, но 2.3.4 файла mail.php не загружает, просит переименовать.
Вопрос такой- можно каждый следующий файл mail.php переименовывать например mail.php1 или 1mail.php, 2mail.php, 3 mail.php.
Спасибо. NMitra Весь вставить на страницу. Даниил Рощупкин Добрый день! А можете ещё подсказать как избавиться от сообщения в новой вкладке? NMitra Добрый день. Если имеется ввиду форма обратного звонка, то нужно в первом случае ограничится стилями

#popup form <
padding: .5% 1% 1%;
border: 1px solid rgb(100,100,100);
font-size: 140%;
font-weight: 600;
text-align: right;
text-shadow: -1px -1px #666;
color: rgb(240,240,240);
background: rgb(150,150,150) linear-gradient(rgb(100,100,100), rgb(170,170,170));
>
#popup div:nth-of-type(1) #popup div:nth-last-of-type(1) #popup div:after <
content: attr(data-title);
display: block;
font-size: 70%;
font-weight: normal;
text-shadow: none;
>
#popup input
#popup [type=’submit’]
#popup label:hover <
color: #dbeaf9;
cursor: pointer;
> dsc Скажите, как можно перенести ответ: «Ваше сообщение отправлено» под форму и чтобы сама форма не смещалась ни вверх ни вниз. Только надпись появлялась бы снизу. Сверху она мне совсем не нравится) Спасибо. NMitra Я это сообщение и сверху то не заметила, а снизу оно совсем невидимым глазу будет.

Читайте также:  Как правильно настроить станок для заточки цепей бензопил

Попробуйте разместить после

Или можно во всплывающем окне. dsc Отлично! Сработало. огромное спасибо вам за эту статью. Я около месяца искал решение этого вопроса и благодаря вам решил!
Теперь мой сайт aligo.com.ua, выглядит достойно!) NMitra Владимир, вместо того, чтобы спамить, написали бы честно, что мы сделали такой-то сервис, чем он может быть полезен моим читателям, например, прост в настройке, дублирует сообщения на сотовый телефон и т.п., а так. ваш комментарий, извините, удалила. Андрей Ерофеев Ребят. Помогите пожалуйста. Что то не могу понять не отправляет письма и все. Уже 4 формы обратной связи перепробовал. Хостинг 1GB Cms Hostcms. Ящик по рекомендации хостинга создан у них же. NMitra Попробуйте с их службой помощи пообщаться, без нужной настроек у хостинга ничего не получится. NMitra нужных* виктор игошин Не отправляет через скрипт с подгрузкой страницы. Основная страницы html, там идет аякс код подгрузки страницы с сервера. При нажатии отправить, страница просто обновляется. Однако если зайти по прямому пути, все срабатывает. Подскажете?
Сайт: pda.ws58.ru нахождения скрипта: pda.ws58.ru/php/contact.php NMitra В action прописываете правильный путь?
PHP поддерживается на странице pda.ws58.ru? Проверить просто: (текущий год) Sergey Milkov Все прекрасно работает, те кто пишут что не работает — видимо вы плохо разбираетесь в html, php и функции mail.
У меня вот не работает css в долбаном IE NMitra Вроде ничего сложного для IE нет. Можно заменить box-shadow на border для верности Александр Доброго времени суток.. не подскажете как сделать чтобы текст «Как к Вам обращаться: ,Email для связи: и Ваше сообщение: » были написаны слева.. а то они растянулись по всей форме(( заранее благодарен. вот ссылка http://ru08.e3w.ru/cont.php простите за спам NMitra #feedback-form <
text-align: left;
>

В вас в коде есть
body, th, td, input, textarea <
text-align: justify;
>
Поэтому всё и растягивается по ширине. Александр Большое спасибо! Все стало так как я хотел altrimenti Спасибо, очень простая и эффектная форма Анонимный У меня вообще не отправляет. Сотни форм перепробовал.
может в .htaccess что-то нужно прописывать? Анонимный У меня вообще не отправляет. Сотни форм перепробовал.
может в .htaccess что-то нужно прописывать?
почтовый ящик Mail.ru
и вообще я не могу понять от кого мне будет приходить письмо? от несуществующего e-mail адреса? NMitra Привет. С email хостера.
На html страницах работает php? Вставьте в код Должен отображаться текущий год. Если нет, то см. http://shpargalkablog.ru/2013/05/reviews-php.html#c7325007653763434309 Там указаны пару рекомендаций или нужно поинтересоваться у службы поддержки хостера что сделать, чтобы на html страницах работал php Denis Gordeev Спасибо за форму, вот только не могу понять как поставить переставить кнопку, что бы была в правом, нижнем углу. Denis Gordeev Получилось, просто с начала когда ставил float: right форма разлеталась почему то 🙁 NMitra

В стили допишите

#feedback-form div <
text-align: right;
> NMitra Не закрыла тег

Denis Gordeev Спасибо, а как сделать что бы ответ формы «ваше письмо отправлено всплывал в новом окне или в модальном? Ivan Alipov Спасибо огромное.
Не разобрался только как сделать заполнение некоторых полей необязательным! NMitra Denis Gordeev,

Ваше сообщение получено, спасибо!

Ваше сообщение получено, спасибо!

Стили можете посмотреть тут http://shpargalkablog.ru/2013/06/popup.html или ждите, на следующей недели постараюсь в комментариях выложить код.

Ivan Alipov, за это отвечает атрибут required в input Сергей Викторович Умные люди да расскажите же вы утаиваемый вами секрет как реализовать все это?
— например:

1 создаём файл mail.php или как его надо правильно назвать то (со следующим содержимым , )
2 вставляем этот mail.php на хостинге туда то
3 каким ёбразом настроить отправку почты с сервера (хостинга) PHP mail или Sendmail или SMTP
4 создаём страницу сайта с кодом ( )
5 видим свою форму на сайте, тестируем и ничего не происходит (вырываем волосы и пишем сюда злобное письмо) умникам

P.S. Странно но на эту страницу по навигации сайта не реально попасть!
NMitra Не могу. На каждом хостинге индивидуальная админка, у каждой CMS своя структура. Смотрите комментарий 21,22 http://shpargalkablog.ru/2013/05/reviews-php.html#c7325007653763434309

3) попробуйте написать службе поддержки хостера

http://shpargalkablog.ru/p/html-css-javascript.html см. раздел PHP, да и с похожих статей можно
http://shpargalkablog.ru/2013/08/bell-site.html или http://shpargalkablog.ru/2014/05/email-file-php.html NMitra Вот, например, как решилась похожая проблема http://shpargalkablog.ru/2013/08/bell-site.html#c5279729162631215872 :
«оказалась на хостинге был не включен какой-то опен». Я о работе хостеров и особенностях CMS также плохо осведомлена. ((( Сергей Викторович Ответьте пожалуйста хотя бы на 1,2,4 вопросы NMitra Я на любую страницу вставляю (html или php) и всё работает. Только делать это нужно в режиме html. NMitra Код см выше, только при копировании стилей теги не забудьте

Читайте также:  Магнитный замок для межкомнатных дверей сломался

Сергей Викторович Теперь мучения состоят в том что бы сама форма вызывала какой то функцией событие отправки почты из файла в корне например назовем его mail.php
Суть в том чтоб не светить адрес почты @ на странице обо опыт получения спама присутствует
Что скажете на эту тему? NMitra PHP код не видно на HTML, потому что он выполняется на стороне сервера руслан попков установил данный скрипт ,работаает,но когда отправляется письмо,страница перезагружается и не понятно отправиось или нет.. Denis Gordeev Вы обещали стили для всплывающего ответа в модальном окне. NMitra Замените

Ваше сообщение получено, спасибо!

echo (»); NMitra Или на

echo (‘

Ваше сообщение получено, спасибо!
Закрыть

‘);

И добавить какие-нибудь такие стили

#popup <
position: fixed;
top: 0;
left: 0;
z-index: 100;
height: 100%;
width: 100%;
text-align: center;
background: rgba(240,240,240,.9);
>
#popup table <
margin: 0 auto;
border: solid #587DA4;
background: #fff;
> NMitra Эм, для второй таблицы тоже центрирование.

#popup table <
text-align: center;
>

Можно что угодно тут придумать: и фон, и значок внимание, и больше текста руслан попков прошу обратить внимание на мою проблему. NMitra А комментарий 57 не помогает? Анонимный как сделать что бы в поле от кого был написал email который был указан в форме NMitra Добавьте заголовки (см код для mail)

$headers = «From: » . $from . «\r\n»;
$headers .= «Reply-To: » . $from . «\r\n»; Ярослав Калюк $headers = «From: » . $from . «\r\n»;
$headers .= «Reply-To: » . $from . «\r\n»;

Покажите, пожалуйста, как добавить, а то приходят кракозябры, но уже с нужным имейлом) NMitra if (isset ($_POST[‘messageFF’])) <
$to = ‘свой@mail.ru’;
$subject = ‘заполнена контактная форма с ‘.$_SERVER[‘HTTP_REFERER’];
$subject = «=?utf-8?b?». base64_encode($subject) .»?=»;
$message = «Имя: «.$_POST[‘nameFF’].»\nEmail: «.$_POST[‘contactFF’].»\n\n».$_POST[‘messageFF’];
$headers = ‘Content-type: text/plain; charset=»utf-8″‘;
$headers .= «MIME-Version: 1.0\r\n»;
$headers .= «Date: «. date(‘D, d M Y h:i:s O’) .»\r\n»;
$headers .= «From: » . $from . «\r\n»;
$headers .= «Reply-To: » . $from . «\r\n»;

mail($to, $subject, $message, $headers);
echo (‘

Ваше сообщение получено, спасибо!

‘);
$_POST[‘nameFF’] = $_POST[‘contactFF’] = $_POST[‘messageFF’] = »;
> Ярослав Калюк Отлично! Все работает.

Может еще покажете как сделать на ajax, чтобы выводилось сообщение об успешной отправке письма без перезагрузки страницы. Было бы супер мега круто =) NMitra Недавно узнала о new XMLHttpRequest(). На следующей неделе подумаю как его приспособить. Анонимный Если бы Вы сами написали скрипт личный, я бы понел. т.е. не копировать скрипт.
NMitra Я не поняла вас, не откуда код ни копировала. У функций скрипта есть стандартный набор параметров, как ни крути, а ничего нового особо не придумаешь. Ярослав Калюк Не обращайте внимание, на всяких там анонимов))

Очень жду функцию отправки письма без перезагрузки страницы) Анонимный Не хватает 3-ех элементов. к полям. экстранировать их для безопасности. от выполнение кодов. например в поле пишится любой код вредоносный. а этого допускать нельзя этого. ну ты понела. например я смотрю код, и мне честно плохо читается код. как говорится не читабельным. когда ты принела переменые нужно их экстранировать их. чтоб злоумышлиник не смог передать код. это JavaScript Анонимный Irbis любите. если будет у Вас время загляните на мой сайт. щас пишу движок к сайту. скоро будет доступным людям. скрипты будут ихбудет много. правда с СУБД . буду рад Вас увидить . а то что пред последний коммент что написал, это не правдо. я увидел что статья взята из IRBIS. то что написал пред это я даю рекомендацию по коду. извини, плохой тон программирования. ))) NMitra Приведите пример, пожалуйста. По Яндексу/Гугл ничего не нашла по запросу «экстранировать javascript php».

У Irbis понравилась именно вышеданная статья, остальные, увы, не читала. Код не копировала, изучала одновременно несколько источников, но посчитала нужным указать именно эту ссылку, поскольку она может быть полезной для читателей. Анонимный Здравствуйте! После нажатия «отправит» пишет:The requested method POST is not allowed for the URL /abroad.html. возможно решить эту проблему?
Спасибо за внимание! NMitra Здравствуйте, проверяйте свои настройки, почему для страницы /abroad.html нельзя применить метод POST. Анонимный Сайт находится на бесплатном хостинге Webservis.ru. Я самоучка- дилетант. Какие настройки? NMitra :)) Спросите у хостера. Запреты могут быть прописаны в PHP или .htaccess Анонимный Автору респект, все работает, спасибо огромное за полезную инфу. Анонимный А как сделать что бы если форма была принята то человека отправляли бы на другую страницу (страницу благодарности), а если не была принята — то об этом было бы написано в самой форме? NMitra Ярослав Калюк, статью подправила. NMitra Анонимный,

http.onreadystatechange = function() <
if (http.readyState == 4 && http.status == 200) <
window.location.replace(‘http://shpargalkablog.ru/2014/01/feedback-form.html’);
>
> Анонимный Сразу прошу прощения что нахозяйничал в коде, но нужно было только два поля (имя и телефон) и немного другую кнопку. С дизайном все получилось, но сообщения не приходят ни на hotmail, ни на gmail, хотя пишет что информация отправлена. Может быть я перехозяйничал редактируя, но вроде старался аккуратно. Можно как-нибудь переслать код? Здесь вроде на код ругаются.
NMitra Посмотрите, возможно этот вариант подойдёт больше http://shpargalkablog.ru/2013/08/bell-site.html

Читайте также:  Как настроить улитку для закатки

Чтобы код писать в комментарии http://shpargalkablog.ru/2010/12/napisat-kod-tekstom.html Игорь Отличная форма, подскажите пожалуйста, как сделать , чтобы форма обнулялась после отправки? NMitra Вместо

http.onerror = function() <
alert(‘Извините, данные не были переданы’);
>
return false;
>

http.onerror = function() <
alert(‘Извините, данные не были переданы’);
>
this.nameFF.value = «»;
this.contactFF.value = «»;
this.messageFF.value = «»;
return false;
>
Анонимный Здравствуйте!
А подскажите, как сделать проверку на заполненность поля имени, к примеру.
Спасибо! NMitra Здравствуйте, что в имени хотите проверять? Чтобы в нём не использовались цифры? Проверка делается или на php, или с помощью атрибута pattern (менее сильная защита). Анонимный Суть вопроса в том, что данную форму можно отправить пустой, просто нажав на отправить. Можно еще использовать псевдокласс required. Спасибо. Анонимный Добрый день, отличная форма, работает. Спасибо. У меня проблема с размером шрифта в полях имя и адрес почты. Что бы буквы нормально отображались приходится масштабировать страницу до 250%. http://arhveterinar.ru/poluchit-konsultaciju/ А можно как нибудь сделать фиксированный размер текста в форме? NMitra Добрый день, добавьте

#feedback-form [required] <
height: auto;
font-size: inherit;
>

У вас в http://arhveterinar.ru/amiro_sys_css.php?styles=common|ami_custom|home&_сv=6.0.6.1&less_mode=none&_sv=0121-12112209 стили:

input < font-size:0.8em; border: #ffa052; height: 17px;>Анонимный NMitra, премного благодарен. Сергей sj4000ЭкшнКамера отлично заработало всё! Супер — просто, конечно! Ещё бы от спамеров добавить в скриптах капчу или проверка телефона на цифры (сам не умею ещё таких вещей делать). Можете полюбоваться вашей формой на моём первом сайте: http://sj4000.net.ua/
Ещё пару доработок и всё — пишите чего не так у меня и что добавить можно! NMitra Капча на коммерческих сайтах будет уменьшать количество посетителей, заполнивших форму. Делайте фильтр по IP спамеров, на первое время этого достаточно. Строку

«Имя: «.$_POST[‘nameFF’].»\nEmail: «.$_POST[‘contactFF’].»\nСообщение: «.$_POST[‘messageFF’]);

«Имя: «.$_POST[‘nameFF’].»\nEmail: «.$_POST[‘contactFF’].»\nСообщение: «.$_POST[‘messageFF’].»\nIP:».$_SERVER[‘REMOTE_ADDR’]);

if (array_key_exists(‘messageFF’, $_POST)) <

if (array_key_exists(‘messageFF’, $_POST) && (strpos($_SERVER[‘REMOTE_ADDR’], ‘здесь IP спамера‘) === false)) <

Код приблизительно такой, работоспособность не проверяла xxgxx Все работает, огромное спасибо!! Подскажите как добавить еще пункты, и что бы email не обязательно вводить? NMitra Уберите required
То есть вместо
input type=»email» name=»contactFF» required placeholder=»адрес электронной почты» x-autocompletetype=»email»
нужно
input type=»email» name=»contactFF» placeholder=»адрес электронной почты» x-autocompletetype=»email»

Есть похожий комментарий 16, но это для простейшей формы связи. Каждое поле input имеет свой name, например, name=»contactFF». Посмотрите где в скрипте он встречается и как соединяется (в теге script плюсом, в php точкой) и сделайте наподобие. карона Добавил вашу форму в текстовый виджет своего блога на вордпресс .Contacts.php добавил в корень сайта После нажатия кнопки отправить ничего не происходит. Подскажите в чем дело? NMitra Карона, мне не известна админка WP, об этом я писала здесь http://shpargalkablog.ru/p/comments-blog.html Анонимный А я делаю формы через специализированный сервис — FormDesigner.ru. Отличный конструктор форм, рекомендую. Может кому-то еще пригодится. NMitra Плохо, что данные формы хранятся на стороннем сервисе. Анонимный Я по этому поводу не переживаю, сервис довольно стабильный, плюс код формы асинхронный, что не влияет на загрузку страницы. За все время использования у меня проблем не возникало. А при необходимости все данные можно экспортировать в Excel для дальнейшего анализа. Анонимный NMitra, подскажите что нужно добавить в файл contacts.php, чтобы отправитель получал сообщение на свой email «Ваще сообщение получено»? NMitra Попробуйте так:

mail ($_POST[‘contactFF’], «тема письма», «Ваше сообщение получено»); Anton Mao Откуда берется всплывающие сообщение — «Заполните поле»? Как его изменить? Анонимный NMitra, спасибо. Сработало.

mail ($_POST[‘contactFF’], «тема письма», «Ваше сообщение получено»); NMitra Анонимный, хорошо

Anton Mao, его формирует сам браузер, как и в случае с атрибутом title, изменить нельзя, можно только убрать, если удалить атрибут required из input Иван К. спасибо за удобную форму!
Подскажите, как сделать. Хочу:
1. ввести ограничение на минимальное количество символов в поле nameFF;
2. чтобы электронный адрес указывался строго по маске name@example.com. NMitra 1) см. maxlength

2) посмотрите регулярное выражение для pattern в Яндексе или Google по запросу «pattern email html5». Хотя лучше всё же также в php закладывать подобные условия Иван К. Спасибо за ответ!
Для минимального количеcтва использовал pattern=».<3,>«. А для верификации e-mail пока использовал pattern, хоть и длиннющий, зараза. salty673 подскажите- а почему ip адрес отправителя определяется некорректно?
NMitra Ответ на ваш вопрос мне, к сожалению, не известен. Ольга Бударина Спасибо за форму! Всё работает, но только если на странице одна форма. Если размещаю две, то при заполнении второй и нажатии «Отправить», страница просто обновляется без отправки данных. Первую форму при этом не трогаю, сразу заполняю вторую. Напишите, пожалуйста, как решить эту проблему? NMitra В стилях селектор
#feedback-form
замените на
.feedback-form

Источник

Adblock
detector