Как сделать api php

">

шпаргалка блоггера HTML/CSS Оптимизация Blogger Полезное

16.06.15 NMitra

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

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

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

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

Файл contacts.html

<!DOCTYPE html> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <form method="POST" id="feedback-form"> Как к Вам обращаться: <input type="text" name="nameFF" required placeholder="фамилия имя отчество" x-autocompletetype="name"> Email для связи: <input type="email" name="contactFF" required placeholder="адрес электронной почты" x-autocompletetype="email"> Ваше сообщение: <textarea name="messageFF" required rows="5"></textarea> <input type="submit" value="отправить"> </form> <script> document.getElementById('feedback-form').addEventListener('submit', function(evt){ var http = new XMLHttpRequest(), f = this; evt.preventDefault(); http.open("POST", "contacts.php", true); http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); http.send("nameFF=" + как сделать api php f.nameFF.value + "&contactFF=" + f.contactFF.value + "&messageFF=" + f.messageFF.value); http.onreadystatechange = function() { if (http.readyState == 4 && http.status == 200) { alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!'); f.messageFF.removeAttribute('value'); f.messageFF.value=''; } } http.onerror = function() { alert('Извините, данные не были переданы'); } }, false); </script>

Файл contacts.php

<? if (array_key_exists('messageFF', $_POST)) { $to = 'свой@yandex.ru'; $subject = 'Заполнена контактная форма с '.$_SERVER['HTTP_REFERER']; $subject = "=?utf-8?b?". base64_encode($subject)."?="; $message = "Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\nIP: ".$_SERVER['REMOTE_ADDR']."\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"; mail($to, $subject, $message, $headers); echo $_POST['nameFF']; }?>

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

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

Файл contacts.php

<!DOCTYPE html> <meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> <style> #feedback-form { max-width: 400px; padding: 2%; border-radius: 3px; background: #f1f1f1; } #feedback-form [required] { width: 100%; box-sizing: border-box; margin: 2px 0 2% 0; padding: 2%; border: 1px solid rgba(0,0,0,.1); border-radius: 3px; box-shadow: 0 1px 2px -1px rgba(0,0,0,.2) inset, 0 0 transparent; } #feedback-form [required]:hover { border-color: #7eb4ea; box-shadow: 0 1px 2px -1px rgba(0,0,0,.2) inset, 0 0 transparent; } #feedback-form [required]:focus { outline: none; border-color: #7eb4ea; box-shadow: 0 1px 2px -1px rgba(0,0,0,.2) inset, 0 0 4px rgba(35,146,243,.5); transition:.2s linear; } #feedback-form [type="submit"] { padding: 2%; border: none; border-radius: 3px; box-shadow: 0 0 0 1px rgba(0,0,0,.2) inset; background: #669acc; color: #fff; } #feedback-form [type="submit"]:hover { background: #5c90c2; } #feedback-form [type="submit"]:focus { box-shadow: 0 1px 1px #fff, inset 0 1px 2px rgba(0,0,0,.8), inset 0 -1px 0 rgba(0,0,0,.05); } </style> <? if (isset ($_POST['messageFF'])) { mail ("свой@yandex.ru", "заполнена контактная форма с ".$_SERVER['HTTP_REFERER'], "Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\nСообщение: ".$_POST['messageFF']); echo ('<p style="color: green">Ваше сообщение получено, спасибо!</p>'); }?> <form method="POST" id="feedback-form"> Как к Вам обращаться: <input type="text" name="nameFF" required placeholder="фамилия имя отчество" x-autocompletetype="name"> Email для связи: <input type="email" name="contactFF" required placeholder="адрес электронной почты" x-autocompletetype="email"> Ваше сообщение: <textarea name="messageFF" required rows="5"></textarea> <input type="submit" value="отправить"> </form>

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

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

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

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

Что делать:

  1. создать файл "test.php" с содержимым <? mail("свой@yandex.ru", "Тема", "Сообщение");?>
  2. чтобы письмо отправилось, перейти (открыть в окне браузера) на страницу "test.php"
  3. если спустя 20-30 минут письмо отсутствует в папках "Входящие" и "Спам", обратиться за разъяснениями в службу поддержки хостинга

Используемые материалы: irbis-team.com

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

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

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

п≤п╪я▐: п©п╡я▀п╟п©п╡п©
Email:
п║п╬п╬п╠я┴п╣п╫п╦п╣: п╬я─п©п╬п©п╬я─я─п╦я─п╬п╦

Это мы уже проходили 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. Может в этом дело. Вернул то, что было до отравления и вставил почту яндекса. Все работает. Но можно ли сделать так чтобы и на мейл ру приходило в правильной кодировке Правда заметил, что на яндекс приходит через раз. Дополнила статью, попробуйте. Отпишитесь, пожалуйста, о результате. Не имею адреса на mail.ru, не могу проверить.

На Яндекс.почте не заметила проблем, хотя уже пачку писем поотправляла.

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

"Имя: ".$_POST['nameFF']."\nВозраст: ".$_POST['vozrastFF']."\nEmail: ".$_POST['contactFF'].

А html будет

input type="text" name="vozrastFF"

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

#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) {padding-top: 3%;}
#popup div:nth-last-of-type(1) {padding: 1% 0 4%;}
#popup div:after {
content: attr(data-title);
display: block;
font-size: 70%;
font-weight: normal;
text-shadow: none;
}
#popup input {font-size: 90%;}
#popup [type='submit'] {cursor: pointer;}
#popup label:hover {
color: #dbeaf9;
cursor: pointer;
}

dsc Скажите, как можно перенести ответ: "Ваше сообщение отправлено" под форму и чтобы сама форма не смещалась ни вверх ни вниз. Только надпись появлялась бы снизу. Сверху она мне совсем не нравится) Спасибо. Я это сообщение и сверху то не заметила, а снизу оно совсем невидимым глазу будет.

Попробуйте <? скрипт?> разместить после <form method="POST" id="feedback-form"> формы </form>

Или можно во всплывающем окне.

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

В вас в коде есть
body, th, td, input, textarea {
text-align: justify;
}
Поэтому всё и растягивается по ширине.

Большое спасибо! Все стало так как я хотел altrimenti Спасибо, очень простая и эффектная форма У меня вообще не отправляет. Сотни форм перепробовал.
может в.htaccess что-то нужно прописывать? У меня вообще не отправляет. Сотни форм перепробовал.
может в.htaccess что-то нужно прописывать?
почтовый ящик Mail.ru
и вообще я не могу понять от кого мне будет приходить письмо? от несуществующего e-mail адреса? Привет. С email хостера.
На html страницах работает php? Вставьте в код <?php echo date("Y");?> Должен отображаться текущий год. Если нет, то см. http://shpargalkablog.ru/2013/05/reviews-php.html#c7325007653763434309 Там указаны пару рекомендаций или нужно поинтересоваться у службы поддержки хостера что сделать, чтобы на html страницах работал php Denis Gordeev Спасибо за форму, вот только не могу понять как поставить переставить кнопку, что бы была в правом, нижнем углу. Denis Gordeev Получилось, просто с начала когда ставил float: right форма разлеталась почему то :( <input type="submit" value="отправить">

замените на

<div><input type="submit" value="отправить"><div>

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

#feedback-form div {
text-align: right;
}

Не закрыла тег

<div><input type="submit" value="отправить"></div>

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

вместо
echo ('<p style="color: green">Ваше сообщение получено, спасибо!</p>');
напишите
echo ('<p id="popup">Ваше сообщение получено, спасибо!</p>');

Стили можете посмотреть тут 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. Странно но на эту страницу по навигации сайта не реально попасть!

Не могу. На каждом хостинге индивидуальная админка, у каждой 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

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

<style>
#feedback-form {

_______________________и т.д_____________________

box-shadow: 0 1px 1px #fff, inset 0 1px 2px rgba(0,0,0,.8), inset 0 -1px 0 rgba(0,0,0,.05);
}
</style>

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

echo ('<p style="color: green">Ваше сообщение получено, спасибо!</p>');

на

echo ('<script>alert("Ваше сообщение получено, спасибо!")</script>');

Или на

echo ('<table id="popup"><tr><td><table><tr><td>Ваше сообщение получено, спасибо!<br><button type="button" onclick="document.getElementById(\'popup\').parentNode.removeChild(document.getElementById(\'popup\'));">Закрыть</button></td></tr></table></td></tr></table>');

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

#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;
}

Эм, для второй таблицы тоже центрирование.

#popup table {
text-align: center;
}

Можно что угодно тут придумать: и фон, и значок внимание, и больше текста

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

$headers = "From: ". $from. "\r\n";
$headers.= "Reply-To: ". $from. "\r\n";

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

Покажите, пожалуйста, как добавить, а то приходят кракозябры, но уже с нужным имейлом)

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 ('<p style="color: green">Ваше сообщение получено, спасибо!</p>');
$_POST['nameFF'] = $_POST['contactFF'] = $_POST['messageFF'] = '';
}

Ярослав Калюк Отлично! Все работает.

Может еще покажете как сделать на ajax, чтобы выводилось сообщение об успешной отправке письма без перезагрузки страницы. Было бы супер мега круто =)

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

Очень жду функцию отправки письма без перезагрузки страницы)

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

У Irbis понравилась именно вышеданная статья, остальные, увы, не читала. Код не копировала, изучала одновременно несколько источников, но посчитала нужным указать именно эту ссылку, поскольку она может быть полезной для читателей.

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

http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
window.location.replace('http://shpargalkablog.ru/2014/01/feedback-form.html');
}
}

Сразу прошу прощения что нахозяйничал в коде, но нужно было только два поля (имя и телефон) и немного другую кнопку. С дизайном все получилось, но сообщения не приходят ни на hotmail, ни на gmail, хотя пишет что информация отправлена. Может быть я перехозяйничал редактируя, но вроде старался аккуратно. Можно как-нибудь переслать код? Здесь вроде на код ругаются.
Посмотрите, возможно этот вариант подойдёт больше http://shpargalkablog.ru/2013/08/bell-site.html

Чтобы код писать в комментарии http://shpargalkablog.ru/2010/12/napisat-kod-tekstom.html

Отличная форма, подскажите пожалуйста, как сделать, чтобы форма обнулялась после отправки? Вместо

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

напишите

http.onerror = function() {
alert('Извините, данные не были переданы');
}
this.nameFF.value = "";
this.contactFF.value = "";
this.messageFF.value = "";
return false;
}
</script>

Здравствуйте!
А подскажите, как сделать проверку на заполненность поля имени, к примеру.
Спасибо! Здравствуйте, что в имени хотите проверять? Чтобы в нём не использовались цифры? Проверка делается или на php, или с помощью атрибута pattern (менее сильная защита). Суть вопроса в том, что данную форму можно отправить пустой, просто нажав на отправить. Можно еще использовать псевдокласс required. Спасибо. Добрый день, отличная форма, работает. Спасибо. У меня проблема с размером шрифта в полях имя и адрес почты. Что бы буквы нормально отображались приходится масштабировать страницу до 250%. http://arhveterinar.ru/poluchit-konsultaciju/ А можно как нибудь сделать фиксированный размер текста в форме? Добрый день, добавьте

#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, премного благодарен. отлично заработало всё! Супер - просто, конечно! Ещё бы от спамеров добавить в скриптах капчу или проверка телефона на цифры (сам не умею ещё таких вещей делать). Можете полюбоваться вашей формой на моём первом сайте: http://sj4000.net.ua/
Ещё пару доработок и всё - пишите чего не так у меня и что добавить можно! Капча на коммерческих сайтах будет уменьшать количество посетителей, заполнивших форму. Делайте фильтр по 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)) {

Код приблизительно такой, работоспособность не проверяла

Все работает, огромное спасибо!! Подскажите как добавить еще пункты, и что бы email не обязательно вводить? Уберите 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 добавил в корень сайта После нажатия кнопки отправить ничего не происходит. Подскажите в чем дело? Карона, мне не известна админка WP, об этом я писала здесь http://shpargalkablog.ru/p/comments-blog.html А я делаю формы через специализированный сервис - FormDesigner.ru. Отличный конструктор форм, рекомендую. Может кому-то еще пригодится. Плохо, что данные формы хранятся на стороннем сервисе. Я по этому поводу не переживаю, сервис довольно стабильный, плюс код формы асинхронный, что не влияет на загрузку страницы. За все время использования у меня проблем не возникало. А при необходимости все данные можно экспортировать в Excel для дальнейшего анализа. NMitra, подскажите что нужно добавить в файл contacts.php, чтобы отправитель получал сообщение на свой email "Ваще сообщение получено"? Попробуйте так:

mail ($_POST['contactFF'], "тема письма", "Ваше сообщение получено");

Anton Mao Откуда берется всплывающие сообщение - "Заполните поле"? Как его изменить? NMitra, спасибо. Сработало.

Попробуйте так:

mail ($_POST['contactFF'], "тема письма", "Ваше сообщение получено");

Анонимный, хорошо

Anton Mao, его формирует сам браузер, как и в случае с атрибутом title, изменить нельзя, можно только убрать, если удалить атрибут required из input

спасибо за удобную форму!
Подскажите, как сделать. Хочу:
1. ввести ограничение на минимальное количество символов в поле nameFF;
2. чтобы электронный адрес указывался строго по маске. 1) см. maxlength
<input type="text" name="nameFF" required placeholder="фамилия имя отчество" x-autocompletetype="name" maxlength="10">

2) посмотрите регулярное выражение для pattern в Яндексе или Google по запросу "pattern email html5". Хотя лучше всё же также в php закладывать подобные условия

Спасибо за ответ!
Для минимального количеcтва использовал pattern=".{3,}". А для верификации e-mail пока использовал pattern, хоть и длиннющий, зараза... salty673 подскажите- а почему ip адрес отправителя определяется некорректно?
Ответ на ваш вопрос мне, к сожалению, не известен. Ольга Бударина Спасибо за форму! Всё работает, но только если на странице одна форма. Если размещаю две, то при заполнении второй и нажатии "Отправить", страница просто обновляется без отправки данных. Первую форму при этом не трогаю, сразу заполняю вторую. Напишите, пожалуйста, как решить эту проблему? В стилях селектор
#feedback-form
замените на
.feedback-form

В HTML вместо идентификатора
<form method="POST" id="feedback-form">
используйте классы
<form method="POST" class="feedback-form">

В JavaScript участок

document.getElementById('feedback-form').onsubmit = function(){
// код
return false;
}

замените на

(function() {
var form = document.querySelectorAll('.feedback-form');
for (var i = 0; i < form.length; i++) {

form[i].onsubmit = function(){
// код
return false;
}
}
})();

здравствуйте!
у меня в браузере сначала отображается такое:
#feedback-form [required] { max-width: 400px; padding: 2%; border-radius: 3px; background: #f1f1f1; } #feedback-form [required] { width: 100%; box-sizing: border-box; margin: 2px 0 2% 0; padding: 2%; border: 1px solid rgba(0,0,0,.1); border-radius: 3px; box-shadow: 0 1px 2px -1px rgba(0,0,0,.2) inset, 0 0 transparent; } #feedback-form [required]:hover { border-color: #7eb4ea; box-shadow: 0 1px 2px -1px rgba(0,0,0,.2) inset, 0 0 transparent; } #feedback-form [required]:focus { outline: none; border-color: #7eb4ea; box-shadow: 0 1px 2px -1px rgba(0,0,0,.2) inset, 0 0 4px rgba(35,146,243,.5); transition:.2s linear; } #feedback-form [type="submit"] { padding: 2%; border: none; border-radius: 3px; box-shadow: 0 0 0 1px rgba(0,0,0,.2) inset; background: #669acc; color: #fff; } #feedback-form [type="submit"]:hover { background: #5c90c2; } #feedback-form [type="submit"]:focus { box-shadow: 0 1px 1px #fff, inset 0 1px 2px rgba(0,0,0,.8), inset 0 -1px 0 rgba(0,0,0,.05); }

а потом уже отображается сама форма
Как к Вам обращаться: Email для связи: Ваше сообщение:

как сделать, чтобы отображалась только сама форма, без куска кода?

Здравствуйте, этот кусок кода поместите в файл CSS или между тегами <style>

<style> кусок кода </style>

Здравствуйте!
Спасибо за помощь! Код вставил в нужное место и все прекрасно заработало.
Есть ли в коллекции Автора такой скрипт, чтобы нажимаешь кнопку "Оставить сообщение" и всплыла формочка с "ФИО" и "№ телефона"?
т.е. чтоб форма обратной связи не висела постоянно, а вызывалась кнопкой...
Спасибо! Здравствуйте, см. http://shpargalkablog.ru/2013/08/bell-site.html Здравствуйте!
По образцу кода не получается сделать форму из 3 "этажей" - все ячейки ввода идут в одной строке.....а не одна под другой.. как быть? Плиз! Здравствуйте, сбросьте код (что у вас получилось) в http://jsfiddle.net/ и дайте ссылку в комментариях Подскажите, что сделать если при отправке письма пишут, что все работает и сообщение отправлено. а по сути ничего не приходит. пробовала ящики менять, но результат один. или все из-за того, что запускаю не в интернете,а на localhost а при загрузке формы на сайт все будет работать Фактически письма отправляет хостинг сайта, так что вы верно подметили, код не будет работать на localhost Можно ли сделать чтоб после нажатия на отправить страница перезагружалась, а то после отправки и сообщения что отправлено все поля заполнены Добавил новое поле и в имейле не отображается информация

input type="text" name="telFF" required placeholder="телефон" x-autocompletetype="tel"

"Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\nТелефон: ".$_POST['telFF']."\nСообщение: ".$_POST['messageFF']);

спасибо. моментально все письма приходят, автору респект.
перерыла несколько скриптов, этот самый нормальный Как сделать перевод текста ошибки? Комментарий 122: можно очищать поля формы, например, после

alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');

добавить

this.nameFF.value = this.contactFF.value = this.messageFF.value = '';

this.nameFF.removeAttribute('value'); this.contactFF.removeAttribute('value'); this.messageFF.removeAttribute('value'); Комментарий 132: в JS тоже нужно

http.send("nameFF=" + this.nameFF.value + "&contactFF=" + this.contactFF.value + "&telFF=" + this.telFF.value + "&messageFF=" + this.messageFF.value);

Комментарий 125: ошибки показаны на основе настроек браузера (для разных пользователей на разных языках). Попробуйте атрибут lang="ru". Штиф Васлер А куда же коды разместить, не совсем понятно. Куда поставить php скрипт, javascript, в шапку, или под форму? Тут бы поподробнее. php в отдельный файл, куда - неважно, если дадите полный адрес http://site.ru/papka/contacts.php

http.open("POST", "http://site.ru/papka/contacts.php", true);

javascript тут стандартно, но быстрее страница будет загружаться, если поместить перед </body>

Штиф Васлер Почему то никак не хочет работать.. Штиф Васлер Коды такие http://www.cssdesk.com/WYS4g
php файл в корне сайта. Что не так? Хостинг может не предоставлять доступ к функции mail() Штиф Васлер Но с CMS то сообщения отправляются. Или это разные вещи? Здравствуйте, у меня 2 вопроса.

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

2-ой это с добавлением своего поля. Я все сделал как в комментарии 17 и частично работает. В письме появилась строчка "Возраст:" и после неё в этой строчке ничего нет.

Штиф Васлер, они могут выключить только одну функцию mail() PHP

Анонимный,
1) служба mail.ru? В статье даны два примера. Вы использовали первый пример с JS, а кодировку взяли из примера два без изменений?
2) пару первых комментариев убрала, нумерация съехала :( См. комментарии 122 и 127

Изначально была описана только "Простейшая форма связи", но так как возникали постоянные проблемы с подключением PHP на HTML страницах, PHP был выведен в отдельный файл и доступ к нему идёт через JS (чтобы страница не перезагружалась). Поэтому первые наверно 100 комментариев посвящены второй форме связи, которую я оставила как альтернативную.

Антон Танский Все равно не приходит смс на почту (специально зарегал яндекс)..... Знаю что разбирали вопрос этот, но все равно подскажите что я не так делаю?? Спасибо, отличная форма, но можно чтоб после подтверждения отправки, форма очищалась. а то данные висят и ждут ресета страницы. Все установил как написано, но письма не приходят, подскажите что не так сделал? http://трубочист78.рф/контакты Сева, посмотрите комментарий 125 При появлении свободной минутки, внесу изменение в статью

Антон и Александр, я, к сожалению, не могу заглянуть в ваш код и посмотреть что не так, поскольку он обрабатывается на стороне сервера. На Яндекс почте все должно быть в порядке. Вероятные причины ошибки: почта фильтрует письма от хостинга так, что те даже в спам не падают; хостинг не предоставляет услугу по доступу к функции PHP mail(); не верно указан путь к файлу contacts.php. На этой неделе постараюсь дать простейший код для теста.

Статью доработала Всё сделал как написано, но письма приходят раз через раз.

Например:

Заполнил форму, нажал отправить и письмо пришло.

Потом не перезагружая страницу сразу опять новое напечатал и нажал отправить но письмо НЕ приходит новое!! И так может несколько раз то приходить то нет, а в БОЛЬШИНСТВЕ случаев НЕ приходит.

Почта

А вот когда делаю тест при помощи test.php, письмо сразу приходит!!!

Помогите, уже замучился, что не так?

И ещё, у меня несколько страниц html и в каждой странице я прописал стиль и форму отправки, а contacts.php один
и с одной страницы всё отправляется, а с остальных нет, хотя код копи\паст c той страницы откуда отправляется... в чём дело, почему с одной страницы отправляется. а с остальных нет? Комментарий 142: onsubmit в статье заменила на addEventListener()
Комментарий 143: замените contacts.php на полный адрес файла

Можете попробовать использовать "простейшую форму", если есть поддержка PHP на HTML страницах, она не хуже

Антон Павлов Спасибо автору!
Сварганил из этой формы модуль под CMS.
Остался вопрос - как добавить сюда код цели Яндекс-метрики?
Пробовал так:
..... method="POST" onsubmit="yaCounter...........reachGoal('goform'); return true;" id="feedback-form"....
сообщение уходит, цель не фиксируется :-(
Как быть? Попробуйте после строки

document.getElementById('feedback-form').addEventListener('submit', function(evt){
yaCounter...........reachGoal('goform');

Антон Павлов Так форма перестает работать, по клику на кнопку - белый лист и содержимое поля Имя в первой строке Антон Павлов Извините, ввел в заблуждение: форма срабатывает, письмо приходит, но цель по-прежнему не фиксируется, а вместо сообщения - белый лист. У меня цели в Метрике на событие вообще настроить не удаётся :( Если будет время и докопаюсь до чего-нибудь путного, отпишусь Pasha Pasha Лариса Волынкина Добрый день. Пробую применить Вашу форму обратной связи. Сначала очень долго не могла разобраться с кодировкой. Создала новый файл в файловом менеджере на хостинге, все работает, но вместо русских букв абракадабра. Помогло только создать новый текстовый файл, скопировать код туда, сохранить в кодировке utf 8,и залить на хостинг вместо того что было. Получается на хостинге изначально создается файл не в той кодировке?
Теперь отображается русский почти везде. Но при отправке сообщения, в окошке где написано Ваше сообщение отправлено, перед этой фразой, там где видимо должно отобразиться имя отправителя - опять абракадабра. Подскажите как исправить, пожалуйста Добрый день, мета тег в HTML должен устранять проблему

<meta charset='utf-8'/>

В примере записан как

<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>

Он не работает?

Возникает такая ошибка:
POST https://interc.info/contacts.php 404 (Not Found)(anonymous function) @ freedback.js:7
Указывает на 7 строку файла:
http.send("nameFF=" + f.nameFF.value + "&contactFF=" + f.contactFF.value + "&messageFF=" + f.messageFF.value); Олег Аксенов Возникает следующая ошибка:
POST http://site.ru/contacts.php 404 (Not Found)(anonymous function) @ freedback.js:7
В файле проблемы с этой строкой:
http.send("nameFF=" + f.nameFF.value + "&contactFF=" + f.contactFF.value + "&messageFF=" + f.messageFF.value); Олег Аксенов Проблема решена. Олег, расскажите, пожалуйста, как решили. Добрый день! Хочу форму, как у вас, но только чтобы она появлялась во всплывающем окне по вызову кнопкой. Не подскажете как это можно сделать? Олег Аксенов NMitra, Поставил на wordpress, все работает нормально, однако придется самому переписать, чтобы была авторизация через smtp, т.к. без этой процедуры попадает в спам(или придется разрешить спам, что не является вариантом). Ничего не происходило у людей(видел комментарии), потому что вызов contacts.php происходит из корня /var/www/, а не корня сайта.
По ошибке было понятно, что не мог вызвать этот самый contacts.php и собственно я просто поправил пути :) Олег Аксенов Дополню, что работает на mail,yandex,gmail и на собственном домене, он просто летит в спам из-за не доверенного адресата. Татьяна, посмотрите, здесь что-то похожее http://shpargalkablog.ru/2013/08/bell-site.html

Олег, из спама можно вытягивать по заголовку письма, например. Посмотрите тут скриншот в конце статьи http://shpargalkablog.ru/2014/05/feedback-form-file.html

Извините но какая то каша из кода совершенно не читаемо Да, есть такое, копируйте, пожалуйста, из Mozilla Firefox Владимир Кулаксизов Форма с прикреплением файлов к письму: http://kylaksizov.ru/files/scripts_modules_plagins/82-forma-otpravki-pisma-s-vlozheniem-php-skachat.html Спасибо парень, помог подскажите, пожлста, как исключить повторную отправку письма при нажатии на F5?
форма то, что нужно - спасибо вам за нее! Используйте первый вариант с new XMLHttpRequest() Я проверяла, форма повторно не отправляется. Может что поменялось? Какой у вас браузер? я ошибся веткой, писал про форму с отправкой файла - http://shpargalkablog.ru/2014/05/feedback-form-file.html
вопрос тем не менее насущный и актуальный.
и еще - как и где можно управлять полями обязательными для заполнения? например интерсно сделать поле телефон заполняемое по типу 9-999-99-99 (например как емаил - x@x) Бесполезно это, сейчас большинство с мобильников звонят
<input type="tel" pattern="\d-\d\d\d-\d\d-\d\d" placeholder="#-###-##-##"/>

Я хотела на той странице вариант с FormData дать (см. https://developer.mozilla.org/ru/docs/Web/API/FormData) Но там поддержка с IE10. Я её ещё не проверила на работоспособность, но выглядит очень привлекательно

вариант с FormData - а как им пользоваться?
я правильно понял, что это поможет избежать повторной отправки при обновлении страницы? Я начала править статью, можете посмотреть. Есть решение проблемы с кодировкой для тех у кого сайт написан на windows-1251. Что б вместо кракозябриков на мыло приходили нормальные буквы кириллицы достаточно прописать функции конвертации для каждой переменной в php файлике (если поддерживает сервер):

if (array_key_exists('messageFF', $_POST)) {
$name = iconv("utf-8", "windows-1251", $_POST['nameFF']);
$email = iconv("utf-8", "windows-1251", $_POST['contactF']);
$message = iconv("utf-8", "windows-1251", $_POST['messageFF']);
mail ("вашапочта@mail.com",
"заполнена контактная форма с ".$_SERVER['HTTP_REFERER'],
"Имя: ".$name."\nEmail: ".$email."\nСообщение: ".$message, "Content-type: text/html; charset=windows-1251 \r\n");
echo $name;
}

Благодарю за дополнение! Я как-то не сталкивалась с windows-1251. Добрый день!
Заранее прошу сильно не пинать ногами, ибо не силен в скриптах) почтовая форма у меня выводится в popup-окошке, скрипт приведен ниже. Как сделать закрытие окна с почтовой формой по кнопке "Отправить", соответственно при корректно заполненных полях?

Оставить заявку

$(document).ready(function(){
$('.popup.close_window,.overlay').click(function (){
$('.popup,.overlay').css('opacity','0');
$('.popup,.overlay').css('visibility','hidden');
});
$('a.open_window').click(function (e){
$('.popup,.overlay').css('opacity','1');
$('.popup,.overlay').css('visibility','visible');
e.preventDefault();
});
});

Добрый день! Я не разбираюсь в jQuery (не смогу пример вам написать). В JS нужно дать имя функции и при событии submit выполнить её. Вам нужно сделать тоже самое, но используя свой синтаксис. Умом понимаю, сделать не могу) может кто-то подскажет, подожду. В любом случае спасибо! Хорошая почтовая форма! Не могу добавить новую строчку, добавил в JS все выше написаное, но ничего не работает. На мыло приходят стандартные 3 строки. Что важно:
1) name у тега, скажем, input
2) в JS в send передаётся ключ-значение. Чтобы не путаться используем то же название ключа, что name.
3) в PHP передаём значение ключа $_POST[] в email и для удобства расшифровки его как-то называем, например, 'телефон: ' Лариса Волынкина Добрый день. У меня код если вставлять все в html не работает. Вставляю первую часть в php, вторую в html. Работает отправка отзыва, но потом белый экран, и на страницу ничего не добавляется.
Не срабатывает вот эта часть:
dl

При добавлении ее в конце в html появляется ошибка, что мол неожидаемый символ. Подскажите в чем может быть дело. Куда и как правильнее добавить эту строчку?

Добрый день, преобразуйте, пожалуйста, код через http://shpargalkablog.ru/2010/12/napisat-kod-tekstom.html Добрый день, подскажите пожалуйста, когда я получаю письма в поле от кого отображается адрес моей электронной почты, который зарегистрирован на сервере, и только в письме указывается адрес реального отправителя, как это можно исправить? Спасибо. Добрый день, добавите в PHP

$headers.= "From: ". $_POST['contactFF']. "\r\n";
$headers.= "Reply-To: ". $_POST['contactFF']. "\r\n";

Но большинство почтовых серверов режет такие письма, даже в спам не бросают их. Так как фактически это хостинг шлёт письма.

НАКОНЕЦТО! работает! спасибо огромное, так же само вставляла только без точек перед равно, не работало. Добрый день, подскажите пожалуйста, мне нужно чтобы вместо:

alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');

после отправки сообщения пользователю показывалась:

мою страничку thankyou.html во фрейме

Добрый день. Вместо

alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');

напишите что-то типа

document.getElementById('raz').innerHTML = "ваш HTML";

Предварительно добавьте до или после формы
<div id="raz"></div>

Мне кажется может пригодится эта страница http://shpargalkablog.ru/2013/04/value-input-javascript.html

Так выводит просто текст "ваш HTML" Вместо "ваш HTML" что-то своё напишите, iframe, например Возможно вам пригодится http://shpargalkablog.ru/2014/10/window-open-javascript.html#popup То есть из окна можно менять содержимое фрейма и наоборот Здравствуйте! Помогите, пожалуйста, форма не работает! Установил код в css, и в html сценарий РНР вариант без JS
Сообщение не отправляет, (в почтовый ящик не приходит) а после отправки показывает на сайте "Ваше сообщение получено". Сейчас я временно изменил выводимое сообщение на "Извините, Ваше сообщение не отправлено по техническим причинам. Создал файл test.php. Он также не приходит на ящик. Хостинг бесплатный, на мои тикеты не отвечает. Сайт pamyaty.v2hd.com Здравствуйте, извините, помимо того, что уже написано в статье и комментариях, мне нечего добавить :( Чаще всего комментаторы сами решают подобные вопросы, а в комментариях пишут как удалось сделать так, чтобы работало или почему не работает.

PHP это не JS, CSS, HTML - я не могу заглянуть в исходный код и посмотреть в чем проблема.

Штиф Васлер Никак не получается вставить свои поля и убрать ненужные. Нужно добавить еще одно поле для города и телефон, а текстовое убрать. Но почему то после моих манипуляций сообщение хоть и говорит что отправлено, но по факту не приходит :\ Штиф Васлер и почему, если две формы установлены на странице, со второй сообщения не отправляются? как установить несколько на одной странице? Штиф Васлер Ну подскажите же мне, как оставить только свои поля?? Если удаляю ненужные из кода и скрипта и пхп, сообщения не отправляются! Ответ на вопрос тут: http://css.shpargalkablog.ru/2015/12/httpshpargalkablogru201401feedback.html (такой огромный кусок текста в комментариях писать не стала, вынесла на отдельную страницу) В том примере поле "Сообщение" заменено на поле "Телефон". Форма дополнена полем "Город". Плюс можно добавлять несколько форм (то, что между <form method="POST" class="feedback-form">... </form> включительно). CSS и JavaScript достаточно в одном экземпляре. Unknown товарищи!с локального сервера есть варик на электронную почту письмо отправить? Мне такой вариант не известен понял.спасибо ;) Alex Огромное спасибо )) Разобрался со всем ))) Мой сайт http://eco-house.kiev.ua/ Unknown Окошко "ваше сообщение получено" открывается через 5 секунд после нажатия отправить. Как уменьшить это время? Окошко появляется после того, как PHP даёт ответ "всё хорошо". Можно просто выводить окошко вне зависимости от результата, просто при нажатии кнопки, но зачем? А если скрипт не пройдёт?
«Самые старые ‹Старые   1 – 200 из 205   Новые› Самые новые»

« следующие записи предыдущие записи »

Используя данный сайт, Вы обязуетесь выполнять условия этого Соглашения. © 2010- гг.

Реклама


Закрыть ... [X]

Форма обратной связи для сайта PHP Примеры Как на груди делает массаж при мастите

Как сделать api php Как сделать api php Как сделать api php Как сделать api php Как сделать api php Как сделать api php Как сделать api php Как сделать api php