- Форма связи для сайта с возможностью отправлять изображения
- Как прикрепить файл к письму на PHP
- Оформление тега input и textarea
- Создать форму обратной связи в модальном окне
- Форма связи для Blogger
- Форма "заказать обратный звонок для сайта" на PHP
- Автоматическое заполнение форм в Хроме (блог Google)
- :before или :after у input
Форму связи можно поместить на страницу сайта "Контакты". Её просто сделать. Если принять предложенный CSS стиль, то форма будет "резиновой":
Ниже представлены два варианта скрипта отправки почты: с Javascript и без
1. Форма связи без перезагрузки
- PHP вынесен в отдельный файл
- при нажатии клавиши F5 форма не будет отправлена снова
- после отправки формы страница не будет перезагружена
- проверка на правильность заполнения полей осуществляется не на стороне сервера
- не поддерживается IE8 и ниже (нужно дополнить код аналогами
addEventListener()
,preventDefault()
иXMLHttpRequest
или использовать вариант 2)
Файл contacts.html
<!DOCTYPE html>
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/>
<!-- атрибут required
говорит, что заполнение поля обязательно -->
<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=" + 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
- в большинстве случаев расширение файла должно быть
.php
- при нажатии клавиши F5 форма будет отправлена снова
- после отправки формы страница будет перезагружена
- проверка на правильность заполнения полей осуществляется не на стороне сервера
Файл 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>
Рекомендации к скрипту отправки почты
- нужно заменить свой@yandex.ru
- нужно заменить contacts.php на полный адрес, например, http://сайт.ru/папка/папка/contacts.php
- для того, чтобы добавить новое поле, нужно внести изменение в HTML, JavaScript и PHP код. Другими словами, добавить те же участки, что и для contactFF. Пример согласно описанию в комментарии 194 можно увидеть тут.
Почему письма не приходят
- письма от хостинга фильтруются и не попадают даже в папку "Спам"
- хостинг не имеет поддержки (не верно настроена или отключена) PHP-функции
mail()
Что делать:
- создать файл "test.php" с содержимым
<? mail("свой@yandex.ru", "Тема", "Сообщение"); ?>
- чтобы письмо отправилось, перейти (открыть в окне браузера) на страницу "test.php"
- если спустя 20-30 минут письмо отсутствует в папках "Входящие" и "Спам", обратиться за разъяснениями в службу поддержки хостинга
Используемые материалы: irbis-team.com
205 комментариев:
1 – 200 из 205 Новые› Самые новые»Многое почерпнула и применила некоторые элементы.
Я не очень сильна в языке программирования, поэтому хотела спросить.
1. Если я правильно понимаю, ту часть кода, что обведена пунктирчиком, надо добавить в CSS, да?
2. А со второй частью что делать? ее куда надо добавить?
Я хотела сделать отдельную страничку для контактной формы и запуталась с нижним (вторым кодом)
Лену Гришину люблю и читаю. Попробую реализовать ее вариант.
Еще раз спасибо :)
Сообщение не отправляет и при отправке показывает
Ваше сообщение получено, спасибо!
'); $_POST['nameFF'] = $_POST['contactFF'] = $_POST['messageFF'] = ''; } ?>
п≤п╪я▐: п©п╡я▀п╟п©п╡п©
Email: suzaku_lan@mail.ru
п║п╬п╬п╠я┴п╣п╫п╦п╣: п╬я─п©п╬п©п╬я─я─п╦я─п╬п╦
mail ("свой@yandex.ru",
"заполнена контактная форма с ".$_SERVER['HTTP_REFERER'],
"Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\nСообщение: ".$_POST['messageFF'], "Content-type: text/html; charset=utf-8 \r\n");
На Яндекс.почте не заметила проблем, хотя уже пачку писем поотправляла.
Для Blogger другая форма http://www.blogger.com/profile/17317191596919797566
"Имя: ".$_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;
}
Попробуйте <? скрипт ?> разместить после <form method="POST" id="feedback-form"> формы </form>
Или можно во всплывающем окне.
Теперь мой сайт aligo.com.ua, выглядит достойно!)
Сайт: pda.ws58.ru нахождения скрипта: pda.ws58.ru/php/contact.php
PHP поддерживается на странице pda.ws58.ru? Проверить просто: <?php echo date("Y"); ?> (текущий год)
У меня вот не работает css в долбаном IE
text-align: left;
}
В вас в коде есть
body, th, td, input, textarea {
text-align: justify;
}
Поэтому всё и растягивается по ширине.
может в .htaccess что-то нужно прописывать?
может в .htaccess что-то нужно прописывать?
почтовый ящик Mail.ru
и вообще я не могу понять от кого мне будет приходить письмо? от несуществующего e-mail адреса?
На html страницах работает php? Вставьте в код <?php echo date("Y"); ?> Должен отображаться текущий год. Если нет, то см. http://shpargalkablog.ru/2013/05/reviews-php.html#c7325007653763434309 Там указаны пару рекомендаций или нужно поинтересоваться у службы поддержки хостера что сделать, чтобы на html страницах работал php
замените на
<div><input type="submit" value="отправить"><div>
В стили допишите
#feedback-form div {
text-align: right;
}
<div><input type="submit" value="отправить"></div>
Не разобрался только как сделать заполнение некоторых полей необязательным!
вместо
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. Странно но на эту страницу по навигации сайта не реально попасть!
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
"оказалась на хостинге был не включен какой-то опен". Я о работе хостеров и особенностях CMS также плохо осведомлена. (((
<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>
Суть в том чтоб не светить адрес почты @ на странице обо опыт получения спама присутствует
Что скажете на эту тему?
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;
}
Можно что угодно тут придумать: и фон, и значок внимание, и больше текста
$headers = "From: " . $from . "\r\n";
$headers .= "Reply-To: " . $from . "\r\n";
$headers .= "Reply-To: " . $from . "\r\n";
Покажите, пожалуйста, как добавить, а то приходят кракозябры, но уже с нужным имейлом)
$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, чтобы выводилось сообщение об успешной отправке письма без перезагрузки страницы. Было бы супер мега круто =)
Очень жду функцию отправки письма без перезагрузки страницы)
У Irbis понравилась именно вышеданная статья, остальные, увы, не читала. Код не копировала, изучала одновременно несколько источников, но посчитала нужным указать именно эту ссылку, поскольку она может быть полезной для читателей.
Спасибо за внимание!
http.onreadystatechange = function() {
if (http.readyState == 4 && http.status == 200) {
window.location.replace('http://shpargalkablog.ru/2014/01/feedback-form.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>
А подскажите, как сделать проверку на заполненность поля имени, к примеру.
Спасибо!
#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;}
Ещё пару доработок и всё - пишите чего не так у меня и что добавить можно!
"Имя: ".$_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)) {
Код приблизительно такой, работоспособность не проверяла
То есть вместо
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 точкой) и сделайте наподобие.
mail ($_POST['contactFF'], "тема письма", "Ваше сообщение получено");
Попробуйте так:
mail ($_POST['contactFF'], "тема письма", "Ваше сообщение получено");
Anton Mao, его формирует сам браузер, как и в случае с атрибутом title, изменить нельзя, можно только убрать, если удалить атрибут required из input
Подскажите, как сделать. Хочу:
1. ввести ограничение на минимальное количество символов в поле nameFF;
2. чтобы электронный адрес указывался строго по маске name@example.com.
<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, хоть и длиннющий, зараза...
#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 для связи: Ваше сообщение:
как сделать, чтобы отображалась только сама форма, без куска кода?
<style> кусок кода </style>
Спасибо за помощь! Код вставил в нужное место и все прекрасно заработало.
Есть ли в коллекции Автора такой скрипт, чтобы нажимаешь кнопку "Оставить сообщение" и всплыла формочка с "ФИО" и "№ телефона"?
т.е. чтоб форма обратной связи не висела постоянно, а вызывалась кнопкой...
Спасибо!
По образцу кода не получается сделать форму из 3 "этажей" - все ячейки ввода идут в одной строке.....а не одна под другой.. как быть? Плиз!
input type="text" name="telFF" required placeholder="телефон" x-autocompletetype="tel"
"Имя: ".$_POST['nameFF']."\nEmail: ".$_POST['contactFF']."\nТелефон: ".$_POST['telFF']."\nСообщение: ".$_POST['messageFF']);
перерыла несколько скриптов, этот самый нормальный
alert(http.responseText + ', Ваше сообщение получено.\nНаши специалисты ответят Вам в течении 2-х дней.\nБлагодарим за интерес к нашей фирме!');
добавить
this.nameFF.value = this.contactFF.value = this.messageFF.value = '';
http.send("nameFF=" + this.nameFF.value + "&contactFF=" + this.contactFF.value + "&telFF=" + this.telFF.value + "&messageFF=" + this.messageFF.value);
http.open("POST", "http://site.ru/papka/contacts.php", true);
javascript тут стандартно, но быстрее страница будет загружаться, если поместить перед </body>
php файл в корне сайта. Что не так?
1-ый это кодировка. На почту приходят вместо русского языка каракули. Пытался изменить кодировку как выше сказано, но сообщения после этого вообще не приходили.
2-ой это с добавлением своего поля. Я все сделал как в комментарии 17 и частично работает. В письме появилась строчка "Возраст:" и после неё в этой строчке ничего нет.
Анонимный,
1) служба mail.ru? В статье даны два примера. Вы использовали первый пример с JS, а кодировку взяли из примера два без изменений?
2) пару первых комментариев убрала, нумерация съехала :( См. комментарии 122 и 127
Изначально была описана только "Простейшая форма связи", но так как возникали постоянные проблемы с подключением PHP на HTML страницах, PHP был выведен в отдельный файл и доступ к нему идёт через JS (чтобы страница не перезагружалась). Поэтому первые наверно 100 комментариев посвящены второй форме связи, которую я оставила как альтернативную.
Антон и Александр, я, к сожалению, не могу заглянуть в ваш код и посмотреть что не так, поскольку он обрабатывается на стороне сервера. На Яндекс почте все должно быть в порядке. Вероятные причины ошибки: почта фильтрует письма от хостинга так, что те даже в спам не падают; хостинг не предоставляет услугу по доступу к функции PHP mail(); не верно указан путь к файлу contacts.php. На этой неделе постараюсь дать простейший код для теста.
Например:
Заполнил форму, нажал отправить и письмо пришло.
Потом не перезагружая страницу сразу опять новое напечатал и нажал отправить но письмо НЕ приходит новое!! И так может несколько раз то приходить то нет, а в БОЛЬШИНСТВЕ случаев НЕ приходит.
Почта ....@ya.ru
А вот когда делаю тест при помощи test.php, письмо сразу приходит!!!
Помогите, уже замучился, что не так?
и с одной страницы всё отправляется, а с остальных нет, хотя код копи\паст c той страницы откуда отправляется... в чём дело, почему с одной страницы отправляется. а с остальных нет?
Комментарий 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');
Теперь отображается русский почти везде. Но при отправке сообщения, в окошке где написано Ваше сообщение отправлено, перед этой фразой, там где видимо должно отобразиться имя отправителя - опять абракадабра. Подскажите как исправить, пожалуйста
<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);
По ошибке было понятно, что не мог вызвать этот самый contacts.php и собственно я просто поправил пути :)
Олег, из спама можно вытягивать по заголовку письма, например. Посмотрите тут скриншот в конце статьи 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. Я её ещё не проверила на работоспособность, но выглядит очень привлекательно
я правильно понял, что это поможет избежать повторной отправки при обновлении страницы?
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;
}
Заранее прошу сильно не пинать ногами, ибо не силен в скриптах) почтовая форма у меня выводится в 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();
});
});
1) name у тега, скажем, input
2) в JS в send передаётся ключ-значение. Чтобы не путаться используем то же название ключа, что name.
3) в PHP передаём значение ключа $_POST[] в email и для удобства расшифровки его как-то называем, например, 'телефон: '
Не срабатывает вот эта часть:
dl
При добавлении ее в конце в html появляется ошибка, что мол неожидаемый символ. Подскажите в чем может быть дело. Куда и как правильнее добавить эту строчку?
$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
Сообщение не отправляет, (в почтовый ящик не приходит) а после отправки показывает на сайте "Ваше сообщение получено". Сейчас я временно изменил выводимое сообщение на "Извините, Ваше сообщение не отправлено по техническим причинам. Создал файл test.php. Он также не приходит на ящик. Хостинг бесплатный, на мои тикеты не отвечает. Сайт pamyaty.v2hd.com
PHP это не JS, CSS, HTML - я не могу заглянуть в исходный код и посмотреть в чем проблема.