BloGGood.ru

Блог Костаневича Степана

WordPress, PHP, HTML, CSS, Windows

Блог на разные темы, seo-оптимизация, раскрутка сайта, создание сайта, вкусные эффекты для сайта и многое другое…

Главная » Эффекты для сайта » Простая HTML форма обратной связи для сайта

Простая HTML форма обратной связи для сайта

2013-07-27 / Вр:23:12 / просмотров: 157956

Форма обратной связи на сайте

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

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

Ну, что же, приступим к созданию простой HTML формы обратной связи.

Простая HTML форма обратной связи для сайта. Способ-1

Шаг №1
Чтобы создать HTML форму обратной связи для сайта,  вам следует создать файл с расширением ".PHP". Дайте название файлу "mail.php" и вставьте в него вот такой скрипт:

<meta http-equiv='refresh' content='6; url='>
<meta charset="UTF-8" />
<?php
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}

if (isset($name) && isset($email) && isset($sub) && isset($body)){

$address = "test-bloggood@rambler.ru";
$mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";
$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
if ($send == 'true')
{echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр";}
else {echo "Ошибка, сообщение не отправлено!";}

}
else
{
echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
}
?>

Итак, строка №1 - здесь указываете адрес главной страницы. После отправки сообщения посетителя автоматически перенаправит по адресу, который вы укажите. Также укажите время, через которое посетитель перенаправится на главную страницу (у меня 6 секунд).

строка №2 - кодировка отображения UTF-8

строка №11 - это самая важная строка! В этой строке вам следует вписать свой электронный почтовый ящик, на который вы хотите получать сообщения с сайта.

Шаг №2
Вставьте в новом файле готовый код формы обратной связи между тегами <body></body> и назовите файл, например "kontakt.html".

<h2>Форма обратной связи.</h2>
<form name="MyForm" action="/mail.php" method="post">
<p><input class="input" name="name" ENGINE="text" style="width:15%" /> Ваше имя*</p>

<p><input class="input" name="email" type="text" style="width:15%" /> Электронная почта*</p>

<p><input class="input" name="sub" type="text" style="width:15%" /> Тема сообщения</p>

<p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
<p><input id="submit" value="Отправить" type="submit" /></p>
</form>

в строке №2 укажите путь к файлу  "mail.php", у меня в примере он /mail.php

Вот и все. Если остановиться на этом этапе, то ваша форма обратной связи будет работать на  сайте, но вид ее будет не очень привлекательный. Это исправимо - нужно к форме прописать стили в CSS файле.

Итак, вставьте в файл "style.css" вот такой код:

#submit {
font-family: sans-serif;
color: #ffffff;
font-size: 18px;
padding: 0px;
text-decoration: none;
box-shadow: 0px 1px 3px #666666;
-webkit-box-shadow: 0px 1px 3px #666666;
-moz-box-shadow: 0px 1px 3px #666666;
text-shadow: 1px 1px 3px #666666;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#ce1515), to(#8b0d0d));
background: -moz-linear-gradient(top, #ce1515, #8b0d0d);
}

#submit:hover {
 background: -webkit-gradient(linear, 0 0, 0 100%, from(#8b0d0d), to(#ce1515));
 background: -moz-linear-gradient(top, #8b0d0d, #ce1515)
}
#respond input[type=text], textarea {
 -webkit-transition: all 0.30s ease-in-out;
 -moz-transition: all 0.30s ease-in-out;
 -ms-transition: all 0.30s ease-in-out;
 -o-transition: all 0.30s ease-in-out;
 outline: none;
 padding: 3px 0px 3px 3px;
 margin: 5px 1px 3px 0px;
 border: 1px solid #DDDDDD;
}
#respond input[type=text]:focus, textarea:focus {
 box-shadow: 0 0 5px rgba(81, 203, 238, 1);
 margin: 5px 1px 3px 0px;
 border: 1px solid rgba(81, 203, 238, 1);
}

Внимание: если вы не знаете, что такое css и как с ним работать, читайте об этом тут.

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

Просмотреть пример.

Если на вашей форме вместо нормальных читабельных слов вы видите караказябли, как на примере снизу:

каракули

тогда откройте файл "mail.php" и "kontakt.html" через бесплатный редактор Notepad++ и в меню перейдите в
"Кодировки" => "Преобразовать в UTF-8 без BOM"
.

Простая HTML форма обратной связи для сайта

Простая HTML форма обратной связи для сайта. Способ-2

Можно сделать только один файл обратной связи с расширением "php", например, с названием "kontakt.php", и в этот файл вписать все коды, скрипты и стили, о которых я расписывал чуть выше. Но все таки кое-какие изменения в коде мы сделаем. Это будет выглядеть вот так:

<html>
<head>
<meta charset="utf-8">
<title>Оформление ссылок</title>

<style>
#submit {
font-family: sans-serif;
color: #ffffff;
font-size: 18px;
padding: 0px;
text-decoration: none;
box-shadow: 0px 1px 3px #666666;
-webkit-box-shadow: 0px 1px 3px #666666;
-moz-box-shadow: 0px 1px 3px #666666;
text-shadow: 1px 1px 3px #666666;
background: -webkit-gradient(linear, 0 0, 0 100%, from(#ce1515), to(#8b0d0d));
background: -moz-linear-gradient(top, #ce1515, #8b0d0d);
}

#submit:hover {
 background: -webkit-gradient(linear, 0 0, 0 100%, from(#8b0d0d), to(#ce1515));
 background: -moz-linear-gradient(top, #8b0d0d, #ce1515)
}
#respond input[type=text], textarea {
 -webkit-transition: all 0.30s ease-in-out;
 -moz-transition: all 0.30s ease-in-out;
 -ms-transition: all 0.30s ease-in-out;
 -o-transition: all 0.30s ease-in-out;
 outline: none;
 padding: 3px 0px 3px 3px;
 margin: 5px 1px 3px 0px;
 border: 1px solid #DDDDDD;
}
#respond input[type=text]:focus, textarea:focus {
 box-shadow: 0 0 5px rgba(81, 203, 238, 1);
 margin: 5px 1px 3px 0px;
 border: 1px solid rgba(81, 203, 238, 1);
}
</style>
</head>

<body>
<meta charset="UTF-8" />

<?php
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}

if (isset($name) && isset($email) && isset($sub) && isset($body)){

$address = "test-bloggood@rambler.ru";
$mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";
$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
if ($send == 'true')
{echo "Сообщение отправлено успешно. Перейдите на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,и вы сможете продолжить ваш просмотр";}
else {echo "Ошибка, сообщение не отправлено!";}

}
else
{
echo "Заполнили все поля!!!";
}
?>

<h2>Форма обратной связи.</h2>

<form name="MyForm" action="" method="post">
<p><input class="input" name="name" type="text" style="width:15%" /> Ваше имя*</p>
<p><input class="input" name="email" type="text" style="width:15%" /> Электронная почта*</p>
<p><input class="input" name="sub" type="text" style="width:15%" /> Тема сообщения</p>
<p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
<p><input id="submit" value="Отправить" type="submit" /></p>
</form>

</body>
</html>

Внимание: еще раз повторюсь: сохранить этот файл нужно обязательно в расширении "php", иначе работать не будет.

Обратите внимание на строчку в коде №70. Как видите, я оставил "action" пустым, так как сам обработчик формы обратной связи находится на одном файле.

<form name="MyForm" action="" method="post">

Просмотреть пример.

Вот и все!!! Надеюсь простая HTML форма обратной связи для сайта действительно была для вас простой.

Понравился пост? Помоги другим узнать об этой статье, кликни на кнопку социальных сетей ↓↓↓

Получай обновления блога!!! Подпишись:

Популярные статьи:

284 Ответов на комментарий - Простая HTML форма обратной связи для сайта

  1. Карина

    Куда потом загружать mail.php и kontakt.html и как вывести форму на отдельной странице?

  2. Avatar photo Степан => автор блога

    mail.php и kontakt.html загружаете на хостинг, где лежит ваш сайт. Если быть более точным – в корень сайта.
    kontakt.html – это уже отдельная страничка для формы (пример №1). Я может вас не правильно понял?

  3. Денис

    Привет! Спасибо за интересную статью! Напишите пожалуйста, что менять в style.css, чтобы увеличить размер полей ввода данных.

  4. Avatar photo Степан => автор блога

    Привет! Пожалуйста!
    Обратите внимание, Денис, на HTML-форму, а точнее на строки полей.

    <p><input class="input" name="name" ENGINE="text" style="width:15%" /> Ваше имя*</p>

    Чтобы увеличить размер полей, Вам нужно указать размер в параметре style=”width:15%”. Можно указать размер не в (%), а в (px), тогда это будет выглядеть так:
    style=”width:100px”

    <p><input class="input" name="name" type="text" style="width:100px" /> Ваше имя*</p>
  5. Денис

    Понял. Спасибо!

  6. Avatar photo Степан => автор блога

    Пожалуйста! Рад был помочь.

  7. Владимир

    Здравствуйте, Степан. Сделал все, как указано, но сообщения не отправляются. В чем может быть проблема.

  8. Avatar photo Степан => автор блога

    Здравствуйте, Владимир. Попробуйте способ №2, он проще. В 54 строке замените электронную почту ([email protected]) на вашу.Сохраните файл, как “nazvanie-faila.php”. После этого все должно работать.

  9. Владимир

    Спасибо за ответ. Я разобрался­ с первым способом все работает. Моя
    ошибка была. А как сделать, чтобы сообщение об отправке было
    всплывающи­м, а не в новом окне. Спасибо если ответите.

  10. Никита

    Здравствуйте Степан,у меня не отправляются сообщения пишут Ошибка, сообщение не отправлено я все сделал как написано и почту поменял и это и в первом и втором случае

  11. Avatar photo Степан => автор блога

    Здравствуйте, Никита! Файлы размещены на хостинге? Расширение файла “php”?

  12. Никита

    Здравствуйте Степан ,файлы размещены на хостинге
    расширение файлов в html и php и не работает

  13. Avatar photo Степан => автор блога

    Здравствуйте, Никита! Если файлы html и php размещены на хостинге и они не работают, обратитесь к вашему хостинг-провайдеру. Я думаю они решат Вашу проблему.

  14. Владимир
    $mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";

    Что здесь не так подскажите пожалуйста в kontakt.html поменял названия форм вместо тема сообщения стало номер телефона а вместо текст сообщения адрес отправки

    выходит вот такая ошибка Parse error: syntax error, unexpected T_STRING in /home/rxlwxpct/public_html/mail.php on line 12

  15. Avatar photo Степан => автор блога

    Напишите полный код формы в файле “kontakt.html” и файла “mail.php”. Может таким способом я пойму Вашу проблему в коде.

  16. Виталий

    Добрый день, Степан! В пришедшем письме отображаются только английские буквы и цифры. Вместо русских букв печатается: ???????

  17. Avatar photo Степан => автор блога

    Здравствуйте, Виталий! Возможно проблема в кодировке файла “mail.php”. Кодировка должна быть UTF-8, для этого откройте текстовый редактор Notepad++. В текстовом редакторе перейдите в меню сверху по вкладке «Кодировки» => «Преобразовать в UTF-8 (без BOM)». О кодировке почитайте тут.

  18. Виталий

    Я все сделал согласно Ваших инструкций, но ситуация не изменилась (вместо русских букв выводятся кракозябры)…
    В общих настройках сайта у меня указано: используемая кодировка на сайте: windows-1251. Это как то влияет на результат?

  19. Avatar photo Степан => автор блога

    Для начала, Виталий, скажите, какой способ Вы используете, первый или второй?

  20. Виталий

    Я использую первый способ. Загрузил mail.php и создал статическую страницу с файлом kontakt.html. Все работает, только есть указанная мной проблема…

  21. Avatar photo Степан => автор блога

    Виталий, проблема в кодировке! Виталий, Вы сделали, так как я говорил? Вы открывали в редакторе Notepad++ файл mail.php? Переходили по вкладке «Кодировки» => «Преобразовать в UTF-8 (без BOM)»? После таких действий все должно было работать? Попробуйте заменить почтовый адрес на другой (припустим, если был mail.ru, поменяйте на rambler.ru).

  22. Виталий

    Степан, я открывал в редакторе notepad++ файл mail.php и перешел по вкладке «Преобразовать в UTF-8 (без BOM)». Но это не помогло… Также я сменил почту с mail.ru на yandex.ru. Тот же результат: вместо русских букв печатаются кракозябры…

  23. Avatar photo Степан => автор блога

    Виталий, что-то Вы делаете не так! У меня все работает!



    Я вам на почту скинул ссылку. Попробуйте, заполните и отправьте форму.

  24. Виталий

    Степан, Ваша форма работает прекрасно. Ну а я что то сделал не правильно… Подскажите: что?

  25. Avatar photo Степан => автор блога

    Я Вам на почту отправил готовые файлы!

  26. Виталий

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

  27. Виталий

    Степан, подскажите, пожалуйста, пошагово что я должен сделать с файлом (1.html) чтобы создать статическую страницу?
    Я просто копирую весь код и переношу его в html на статическую страницу, после чего сохраняю. Может я что то не так делаю?
    Также я не разобрался в какое место “style.css” нужно вставить соотв. код…

  28. Avatar photo Степан => автор блога

    Виталий, даю пошаговую инструкцию:
    1). Прежде чем создавать сайт, пройдите основы HTML
    2). Прочитайте основы CSS.
    После этих уроков, подобные вопросы возникать уже не будут. Без обид. Я хочу вам помочь!

  29. антон

    здравствуйте !скажите пожалуйста а если сайт ещё пока не на хостинге,а он у меня еще в процессе создания на жестком диске…форму установил но сообщение не приходит на e-mail

  30. Avatar photo Степан => автор блога

    Здравствуйте, Антон! Если Ваш сайт находиться на жестком диске, в таком случае форма обратной связи работать не будет. Причина в файле php (обработчик формы), он работает только на хостинге.

  31. Ольга

    Здравствуйте! Спасибо огромное за форму, я пользовалась способом №1, все прекрасно работает. Но может быть есть способ сделать так, чтобы сообщение что письмо отправлено выводилось на той же странице?

  32. Avatar photo Степан => автор блога

    Здравствуйте, Ольга! Вам нужен способ №2.

  33. Костя

    Здравствуйте, спасибо за форму, очень хорошо подошла для сайта, но есть проблема, после нажатия кнопки отправить не сообщение отправляется, а этот файл mail.php скачивается мне на компьютер, почему так? Спасибо=)

  34. Костя

    все я понял, мой хост не поддерживает php…спасибо=)

  35. Avatar photo Степан => автор блога

    Здравствуйте,Костя, Вы используете бесплатный хостинг?

  36. Avatar photo Степан => автор блога

    Как называется хостинг?

  37. Ольга

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

  38. Avatar photo Степан => автор блога

    Здравствуйте, Ольга! Самом вверху, над формой, выводиться сообщение. Просмотрите у меня на примере
    /wp-content/lessons/obratnaya-svaz/1/kontakt-2.php

  39. Артур

    Доброе время суток. Отличная статья! Все очень понятно! Великолепно, я проискал 4 дня как сделать форму в очень подробном формате и легкую. Ваш сайт просто изюминка в интернете. У меня вопрос к вам Степан. Дело в том что я не хочу чтобы после отправки сообщения, происходил переход на стартовую страницу. Можно как то сделать чтобы просто сообщения вылезло – Ваше сообщение отправлено. И все?

  40. Avatar photo Степан => автор блога

    Здравствуйте, Артур! Вам достаточно в файле “mail.php” удалить первую строчку, которая отвечает за перенаправление:

    <meta http-equiv='refresh' content='6; url='>
  41. Артур

    Степан спасибо, И последний вопрос. Вот я хочу чтобы только можно было отправлять сообщение без имен и email. У меня получится такой код

    <p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
    <p><input id="submit" value="Отправить" ENGINE="submit" /></p>
    </form>

    И у меня когда отправляешь сообщение выходит что

    “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”

    Странное, что не так? А когда с именем и email все работает.

    И еще где можно ширину изменить? в css? подскажите пожалуйста какая строчка

  42. Avatar photo Степан => автор блога

    Артур, Вам нужно изменит php-обработчик.

    <meta charset="UTF-8" />
    <?php
    
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
     
    if (isset($body)){
     
    $address = "[email protected]";
    $mes = "Текст: $body";
    $send = mail ($address,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
    

    Чтобы поменять ширину, заменит здесь “width:30%” параметры:

    <p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
  43. Daniel

    Вот моя форма, из песни слов не выкинуть. Можете подкоректировать Ваш php код обработки, для моей формы? Сам пробовал заменить, все равно ошибку выдает при заполнении. Помогите пожалуйста!)

    <article class="container box style3">
    				<header>
    					<h2>Форма заказа</h2>
    					<p>Заполните форму обратной связи, и мы Вам перезвоним!</p>
    				</header>
    				<form method="post" action="mail.php">
    					<div class="row 50%">
    						<div class="6u"><input ENGINE="text" class="text" name="name" placeholder="Name" /></div>
    						<div class="6u"><input type="text" class="text" name="email" placeholder="Email" /></div>
    						<div class="6u"><input type="text" class="text" name="sub" placeholder="Tel.:"/></div>
    					</div>
    					<div class="row 50%">
    						<div class="12u">
    							<textarea name="message" placeholder="Message"></textarea>
    						</div>
    					</div>
    					<div class="row">
    						<div class="12u">
    							<ul class="actions">
    								<li><input type="submit" value="Send Message" /></li>
    							</ul>
    						</div>
    					</div>
    				</form>
    			</article>
  44. Avatar photo Степан => автор блога

    По моему все верно! Что в ошибке пишется?
    Кстати, вы проверяли работу формы обратной связи на сервере или на домашнем ПК?

  45. Александр

    ВЫВОДИТ ВОТ ЭТО ПОСЛЕ ОТПРАВКИ. ПОЧЕМУ ?
    код формы вставил не в отдельный файл а сразу в index.html где находится всё меню и контент. Вставил в раздел контакты. Сайт самописный

    <?php
    if (isset($_POST[&#039;name&#039;])) {$name = $_POST[&#039;name&#039;]; if ($name == &#039;&#039;) {unset($name);}}
    if (isset($_POST[&#039;email&#039;])) {$email = $_POST[&#039;email&#039;]; if ($email == &#039;&#039;) {unset($email);}}
    if (isset($_POST[&#039;sub&#039;])) {$sub = $_POST[&#039;sub&#039;]; if ($sub == &#039;&#039;) {unset($sub);}}
    if (isset($_POST[&#039;body&#039;])) {$body = $_POST[&#039;body&#039;]; if ($body == &#039;&#039;) {unset($body);}}
     
    if (isset($name) &amp;&amp; isset($email) &amp;&amp; isset($sub) &amp;&amp; isset($body)){
     
    $address = &quot;[email protected]&quot;;
    $mes = &quot;Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body&quot;;
    $send = mail ($address,$sub,$mes,&quot;Content-type:text/plain; charset = UTF-8\r\nFrom:$email&quot;);
    if ($send == &#039;true&#039;)
    {echo &quot;Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/Users/Александр/Desktop/one-page-cv/index.html' rel="nofollow">BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
    
  46. Avatar photo Степан => автор блога

    Здравствуйте, Александр! Все очень просто, Вы установили PHP код в HTML-файл. Поменяйте расширение файла html на php и все заработает. Пример:
    было так index.html а стало вот так index.php
    Еще, вы тестируете форму на домашнем компьютере или сайт находиться в интернете? Если на домашнем компьютере, тогда код PHP работать не будет, если же сайт в сети, значит все ок и можете проверять.

  47. Наталья

    C Новым Годом, Степан, и большое спасибо! Я несколько дней разными способами пыталась установить форму обратной связи, сегодня она, наконец, заработала! Только почему при незаполненном поле “тема” письмо не отправляется, а выходит надпись, что заполнить надо все поля. Ведь “тема” – необязательное поле? И при необходимости это поле ведь можно удалить? :smile:

  48. Avatar photo Степан => автор блога

    С Новым Годом, Наталья! При необходимости, можно удалить поле “Темы”. Только нужно заменить строку №9:

    if (isset($name) && isset($email) && isset($body)){

    Кстати, если заменить строку №9, тогда поле “Тема” будет не обязательным для заполнения!

  49. Надежда

    Степан, благодарю за форму!
    Планирую делать по 2 способу. Никак не могу понять что вставить в файл страницы сайта. Файл .php размещу в корневой каталог на хостинге, но ведь нужно что-то писать на страничке, где расположена форма? В самом html файле вставить какой-то код, нет?

  50. Avatar photo Степан => автор блога

    Здравствуйте, Надежда!
    Вставляете на сайт все, что находится между тегами body.
    Рекомендую вам ознакомиться с основами HTML.

  51. Надежда

    Спасибо, Степан
    К сожалению, так у меня ничего и не получилось
    Я явно что-то не то вставляю в тело сайта((

  52. Avatar photo Степан => автор блога

    Надежда, файл, в который вы вставили код (способ №2) должен быть формата php а не html. То ест, если файл назывался “1.html” измените на “1.php”. Залейте на хостинг. Должно заработать.

  53. Надежда

    Степан, я создала новый файл php. Куда скопировала то, что написано в способе 2, заменила нужные строчки.
    Залила на хостинг.
    Форма должна отразиться на странице index. моего сайта Этот файл у меня html. В этом файле должно ведь что-то прописываться, чтобы обращаться к файлу php?

  54. Avatar photo Степан => автор блога

    Надежда, читайте мня внимательней! Если Вы используете способ №2, там в коде html встроенный php. Чтобы заработал php, вы должны вместо “index.html” сделать “index.php”. Я даже это в статье выделил цитатой

    “Внимание: еще раз повторюсь: сохранить этот файл нужно обязательно в расширении “php”, иначе работать не будет.”

  55. Надежда

    Я все это очень внимательно прочитала и конечно же поняла совсем иначе))))
    Спасибо, попробую напишу))))

  56. Надежда

    К сожалению, все равно кривулька какая-то получается((

  57. Avatar photo Степан => автор блога

    Проверил Ваш сайт, но не смог посмотреть на кривульку-форму :) .
    Вы поставили другую форму? Кстати, на Вашей форме не работает капча.

  58. Нил

    Добрый день!
    У меня пишет что сообщение отправлено.
    Но письмо не приходит на почту.
    Что это может быть?
    Всё сделал как написано…

  59. Нил

    Проблема решена, она была в тестовом хостинге.

  60. Avatar photo Степан => автор блога

    Здравствуйте! Проверьте, правильно ли вы указали почту в php-обработчике:

    $address = "[email protected]";

    [email protected] – ваша почта.

  61. Надежда

    Под работающей формой (пусть с кривой капчей) текст :

    Форма обратной связи.

    Ваше имя*
    Электронная почта*
    Тема сообщения
    Текст сообщения:
    и маленький квадратик с кнопкой “отправить”- это результат внесения Вашей формы моим кривыми ручками.

  62. Елена

    Спасибо. Получилось и чисто, и все работает.

  63. Avatar photo Степан => автор блога

    Пожалуйста, Елена!

  64. ал

    А у меня не работает ни первый вариант ни второй. файлы PHP
    c хостинга [адрес удален] сказали что проблема не у них
    адрес почты поставил свой

  65. Avatar photo Степан => автор блога

    Форма обратной связи работает корректно, как первый так и второй вариант. Вы когда делали второй способ, какое расширение было у файла, “*.html”???

  66. ал

    Хостинг признался после долгих пыток что их косяк
    Написали что–Наблюдалась проблема в конфигурации Вашего аккаунта.
    Теперь работает.
    Проблема теперь в другом
    На сайте с расширением .ru работает, а
    на сайте с расширением .рф не хочет.
    Хостинг клянётся и божиться, что проблема с кодом

  67. Avatar photo Степан => автор блога

    После отправки на сайте появляется ошибка или просто письмо на почту не приходит?

  68. ал

    пишит ошибка, не отправлено. сообщение не приходит, это для .рф
    Кстати на яндекс почту сообщение приходят моментом, а на маил почту, можно ждать 2-3 часа, но это для .ru

  69. ал

    короче проблема только в хостинге.
    Написали ответ—- Мы восстановили возможность отправки писем с сайтов Вашей учетной записи.
    Сразу вопрос, после чего восстановили…… восстановители хреновы

  70. Анатолий

    Супер получилось все с первого раза настроить на ТС !
    Только вот проверяю у себя нормальные буквы пишет при отправке,а пробую на другом компе пишет крякозябры

    Вопросик! можно как то сделать чтобы при заполнении формы где пишется E-mail если напишешь что то от балды к примеру цифры или что то либо еще … Выдавало ошибку “Введите правильно свой E-mail” типо таго :grin:

  71. Avatar photo Степан => автор блога

    Насчет “крякозябры”, нужно установить кодировку. Прочитайте об этом здесь.
    Насчет проверки формы, можно сделать проверку к любому полю. Об этом я написал статью вот здесь.

  72. Акиф

    Здравствуйте Степан.Во первых спасибо за ваш блог.Для меня это как учебник, постоянно бываю у вас в сайте. Много полезного. У меня вот такая проблема. Я взял от вас код и создал простую форму обратной связи. Все работает и письмо доходит. Вот только беда. Письмо доходить без текста. Пустое письмо.По какой причине, не могу понять. Пожалуйста, помогите мне в этом разобраться.Заранее спасибо. С ув.Акиф

  73. Avatar photo Степан => автор блога

    Здравствуйте, Акиф! Спасибо вам за комментарий!
    Скажите, какой способ вы пробовали, №1 или №2 ?
    Попробуйте вставить в форму и обработчик формы не на сайт, а отдельно. Может какой-то конфликт с каким-то скриптом. Если проблема не решиться, пишите, будем, что-то дальше думать. Форма 100% рабочая.
    Можете посмотреть еще одну простую форму

  74. Андрей

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

  75. Avatar photo Степан => автор блога

    Здравствуйте, Андрей! Вы проверяли письма в СПАСМ-е?

  76. Андрей

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

  77. Avatar photo Степан => автор блога

    Андрей, попробуйте еще другие почтовые адреса (mail.ru, rambler.ru, gmail.com и т. д.). Если проблема останется, предлагаю залить форму на другой хостинг.

    Если вы использовали мою форму из статьи, все должно работать без проблем. Значит проблема на хостинге. Попробуйте залить форму на другой хостинг.

  78. Андрей

    Да, спасибо, я уже на 100% уверен, что проблема в хостинге. Переезжаю! :smokes:

  79. Avatar photo Степан => автор блога

    Могу порекомендовать отличный хостинг. Дорогой и есть послабее на хороший и дешевый.

  80. Никита

    Сделал по способу номер 1 , но к сожалению сообщения не приходят,в чем беда?

  81. Никита

    вот по второму способу сделал,работает,но только одна почта,пробую другие – ничего не приходит.

  82. Avatar photo Степан => автор блога

    Перенаправление происходит после отправки сообщения?

  83. Avatar photo Степан => автор блога

    Укажите, какие почтовые сайты не принимает и покажите, как вы заполнили строку №56

    $address = "[email protected]";
  84. Никита

    56 строка:

    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

    – все как в примере,ничего не изменял. поставил почту mail.ru не доходят,на yandex 2 аккаунта пробовал,только на один все без нареканий доходит. Я просто не сильно разбираюсь,если что-то править нужно подскажите)

  85. Никита

    да перенаправление на сайт происходит,

    $address = "[email protected]";

    свою почту ставлю

  86. Avatar photo Степан => автор блога

    Вы смотрели в СПАМ

  87. Alla

    Спасибо за статью! очень помогла :smile:

  88. Алексей

    :gazeta: :| как дабавить либо вообще переобразовать код на вид:
    Имя фамилия отчество..и тд.. то есть нужны доп поля

  89. Андрей

    Добрый вечер,Степан! Ваш код действительно рабочий, огромное вам спасибо, за ваш труд! Подскажите пожалуйста:
    1) какой командой в файле php можно задать обязательное или не обязательное поле? (сейчас все поля являются обязательными)
    2) Каким образом можно добавить новое поле именно в php файле? (в html все понятно как сделать).

  90. Avatar photo Степан => автор блога

    Добрый вечер, Андрей! Отвечаю на ваши вопросы:
    1). какой командой в файле php можно задать обязательное или не обязательное поле?
    – в php создаете проверку поля через команду if else.
    – можно воспользоваться обычным HTML5. Например вот так:

    <input ENGINE="text" name="email" required />

    какие есть еще атрибуты для проверки формы можете почитать здесь.
    2). Каким образом можно добавить новое поле именно в php файле?
    – здесь я Вас не понял! Поля создаются только при помощи хтмл, а на php делается только обработчик для полей (чтобы все что было написано на полях отправилось в указанное место)

  91. Avatar photo Степан => автор блога

    Добавьте

    ..................
    <p><input class="input" name="fio" ENGINE="text" style="width:15%" /> Фамилия</p>
    .....................
    

    в обработчике

     
    if (isset($_POST['fio'])) {$fio = $_POST['fio']; if ($fio == '') {unset($fio);}}
    $mes = "Имя: $name \n Фамилия: $fio \n  E-mail: $email \nТема: $sub \nТекст: $body";
    
  92. Борис

    Здравствуйте, Степан!
    Использую второй вариант Вашего кода.
    На почту mail.ru сообщение не пришло. На яндекс-почту сообщение пришло мгновенно.

    В чем может быть загвоздка?
    А вообще спасибо, работает же. Впринципе можно с яндекса перенаправление на mail.ru сделать…

  93. Ира

    Здравствуйте. у меня не получается форма обратной связи(((Почему – не знаю

  94. Avatar photo Степан => автор блога

    Здравствуйте. Обратите внимание на расширение файла, должно быть (php).
    Также php работает только на сервере (хостинге).
    По этим двум причинам может и не работать форма

  95. Avatar photo Степан => автор блога

    Здравствуйте, Борис! Вы на почте “mail.ru” в СПАМ смотрели? Может письмо туда попало

  96. ал

    Вот что мне ответила тех. поддержка
    Проблема с отправкой писем возникает из-за того, что сервис mail.ru заблокировал получение почты с сервера, где расположен Ваш аккаунт. Мы занимаемся решением данной проблемы, однако ответ со стороны mail.ru, к сожалению, еще не поступил. В скором времени отправка почты возобновится. Приносим извинения за временные неудобства.

    В итоге я забил на маил.ру и отправил письма на яндекс.
    Но яндекс почему то их в спам отправляет.
    Короче не хотят они все нормально работать

  97. Борис

    Смотрел. Там вообще странность какая-то: письма доходят с большой задержкой и не все. Грубо говоря – через раз. В общем, логики нет. Возможно хостинг тупит.

  98. Avatar photo Степан => автор блога

    Перейдите на другой хостинг. Или напишите письмо не в маил и не в яндекс, а своему хостеру.

  99. Avatar photo Степан => автор блога

    Не возможно, а точно. Что за хостинг? Я прочитаю про них.

  100. Борис

    Skyhost.ru
    Последний год-два стали долго думать, техподдержка долго и часто не по теме. Но цена-качество)

  101. Avatar photo Степан => автор блога

    Знаю, из дншевых, хороший хостинг – “бест хостер

  102. Максим

    Добрый день!
    Поднял локальный сайт на openserver.
    Взял Вашу форму, Ваш скрипт, немного подправил. Сообщение отправляю на yandex почту.
    То, что передается через input’ы превращается в вопросы. Стационарный текст отображается корректно.
    Прошу помощи.

    Содержание письма:
    Имя: ??????
    Дата консультации: ???????
    Время консультации: ? 19:00

    <form name="form_ipr" action="http://kiosk/mail-zayavka.php" method="post">
    <p><input required class="input" name="name" ENGINE="text" style="width:15%" size=30/> Ваше имя*</p> <br>
    <p><input required class="input" name="data_kons" type="text" style="width:15%" /> Дата консультации*</p> <br>
    <p><input required class="input" name="time_kons" type="text" style="width:15%" /> Время консультации*</p><br>
    <p><input id="submit" value="Отправить" type="submit" /></p>
    </form>
    <meta http-equiv='refresh' content='5; url=http://kiosk/'>
    <meta charset="UTF-8">
    
    <?php
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['data_kons'])) {$data_kons = $_POST['data_kons']; if ($data_kons == '') {unset($data_kons);}}
    if (isset($_POST['time_kons'])) {$time_kons = $_POST['time_kons']; if ($time_kons == '') {unset($time_kons);}}
    
    if (isset($name) && isset($data_kons) && isset($time_kons)){
     
    $address = "******@curzd.ru";
    $mes = "Имя: $name \nДата консультации: $date_kons \nВремя консультации: $time_kons";
    $send = mail ($address,"Заявка",$mes);
    if ($send == 'true')
    {echo "Сообщение отправлено успешно, через 5 секунд Вы будете направлены на главную страницу";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
    
  103. Avatar photo Степан => автор блога

    Здравствуйте, Максим! Я думаю проблема в кодировке. Файл с обработчиком формы должен быть сохранен в UTF-8 без бом. Смотрите тут

  104. Максим

    Степан, спасибо. Но к сожалению, не помогло. Точно так же текст отображается вопросами.

  105. Максим

    Степан,
    После Вашего совета проблема не устранилась.
    Прошу рекомендации, как все-таки поступить?
    Может ли быть проблема в Яндекс.Почте?

  106. Avatar photo Степан => автор блога

    Попробуйте тогда вот эту

  107. Avatar photo Степан => автор блога

    Проблема в кодировке 105%. Может быть такое, что сервер отдает только win-1251. Определите какую кодировку выдает сервак и преобразуйте из той, что выдается в ту, которую нужно на странице. Вот и все!

  108. Вячеслав

    Степан, добрый день.
    Спасибо за форму, хорошо работает.
    Возник вопрос, а как в 1 варианте формы, организовать отправку письма с вложением файла?

  109. Avatar photo Степан => автор блога

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

  110. Вячеслав

    Нашёл много решений, но попытавшись их совместить с Вашей формой, ничего не получилось.
    Мне удалось организовать выбор файла.
    А вот прописать непосредственно php в файле, не хватает знание кодов.
    Заплатить деньги конечно можно, но я это буду делать тому человеку, который мне сделают сайт полностью. А пока, для работы пары страниц сайта, мне нужна просто форма обратной связи.
    Ну а раз, Вы такой занятой человек и не можете подсказать пару строк кода, то спасибо хоть за форму.

  111. Avatar photo Степан => автор блога

    Не обижайтесь, Вячеслав. Вы должны понимать, что каждый труд стоит денег. Все мы уже не дети и должны это понимать.
    Специально для Вас разрабатывать код для формы, это время, которое я мог бы провести со своей семьей. Если был бы готовы код у меня, я бы дал без проблем. А так, мне нужно его составлять самому.

  112. Максим

    Степан, добрый день!

    Получил ответ от разработчиков Яндекс.Почты.

    “Проверили письмо — в нём не найдено указания на какую-оибо кодировку. Проверьте, пожалуйста, настройки Вашей формы. Кажется, она не формирует заголовок “Content type” и потому не передаёт информацию о кодировке.”

    Буду сидеть и разбираться, почему информация не передается. Как только выясню, отпишу в комментариях, вдруг у кого-то такие же проблемы возникнут

  113. Максим

    После очередной итерации всё заработало. Видимо, были проблемы с руками и кодировкой. Спасибо, Степан, за терпение и за столь удобный функционал!

  114. Avatar photo Степан => автор блога

    Пожалуйста, Максим!

  115. Илья

    Степан, спасибо за простую и рабочую форму!
    С Денвером дольше пришлось разбираться чем интегрировать форму в страничку, навести косметику и запустить.
    Совсем не зная php – вставил и заработало!

  116. Avatar photo Степан => автор блога

    Пожалуйста, Илья!

  117. Сергей

    Доброе время суток ,код рабочий и очень полезны спасибо огромное.
    Хотел задать вопрос , можно ли добавить вариант при ошибке чтобы не перенаправлял на главною а просил исправить ошибку или перенаправлял на другую страницу .

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

  118. Avatar photo Степан => автор блога

    Здравствуйте, Сергей! Вам нужно прочитать вот эту статью. Она Вам поможет решить задачу

  119. Серге

    Я вставил форму обратной связи по вашим описаниям, но позже отказался от нее. Но вы мне испортили этим страницу сайта. Постоянно открывается ваша страница, через 6 сек, и ни чего не могу поделать, даже когда полностью удалил вашу эту форму обр. связи. Это ВИРУС!?

  120. Avatar photo Степан => автор блога

    Сергей, это не вирус, просто нужно читать статью.
    В статье я написал и в коде выделил строку №1 (к файлу “mail.php”).

    <meta http-equiv='refresh' content='6; url='>

    “Итак, строка №1 – здесь указываете адрес главной страницы. После отправки сообщения посетителя автоматически перенаправит по адресу, который вы укажите. Также укажите время, через которое посетитель перенаправится на главную страницу (у меня 6 секунд)”.

    Уберите мой адрес блога и пропишите ваш и все.

  121. Avatar photo Степан => автор блога

    “Постоянно открывается ваша страница, через 6 сек, и ни чего не могу поделать, даже когда полностью удалил вашу эту форму обр. связи” – вы не удалили обработчик. Удалите полностью вот этот код:

    <meta http-equiv='refresh' content='6; url='>
    <meta charset="UTF-8" />
    <?php
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
     
    if (isset($name) && isset($email) && isset($sub) && isset($body)){
     
    $address = "[email protected]";
    $mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
    

    и не пугайте здесь людей вирусом, а лучше почитайте основы HTML. Не в обиду было сказано!

  122. Avatar photo Степан => автор блога

    Сергей, я получил от Вас не очень приятные письма с угрозой. Если вы мне сейчас не дадите адрес вашего сайта с моей формой, вы попадете в черный список.
    Еще, Сергей, вы не думали, почему только у Вас у одного возникала проблема с формой?
    Жду ответа. Пишите не на почту, а в комментарий, пусть люди почитают Ваши ответы.

  123. Алексей

    Ищу как мне сделать скрипт на товарный одностраничник с апселлом. У вас самое

    толковое объяснение, как отправлять сообщения на почту. Но мне нужно:
    1. Отправляем на [почта скрыта]
    2. Считываем данные с полей формы Имя и Телефон
    3. При нажатии кнопки “Отправить” на форме, перебрасывает на дополнительную

    страничка upsell.php. НО ПРИ ЭТОМ ДАННЫЕ С ПОЛЕЙ ФОРМЫ НЕ ОТПРАВЛЯЮТСЯ НА Е-МЭЙЛ,

    А СОХРАНЯЮТСЯ-ОЖИДАЮТ КОМАНДЫ ОТПРАВКИ!!!
    4. На странице с апселлом есть 2 кнопки (нет никакой формы):
    а) если покупатель жмёт кнопку “Добавить в посылку”, то вступает в дело функция

    отправки сообщения mail с собранными данными с полей формы и добавляется название

    дополнительного товара. Это всё выражается в конечном итоге в виде сообщения на

    е-мэйл
    Имя:
    Телефон:
    Название дополнительного товара.
    б) если покупатель жмёт кнопку “Отказаться”, то вступает в дело функция отправки

    сообщения mail с собранными данными с полей формы, но уже без добавления

    дополнительного товара. Это всё выражается в конечном итоге в виде сообщения на

    е-мэйл
    Имя:
    Телефон:

  124. Денис

    Добрый вечер Степан!
    Вставляю вашу форму в сайт все пишется что письмо ушло!
    Но письмо на почту не приходит!
    Помогите пожалуйста разобраться!
    Пробовал оба варианта но обе формы обработка идет но письма не доходят!

    <!DOCTYPE html>
    
    <?php
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
     
    if (isset($name) && isset($email) && isset($sub) && isset($body)){
     
    $address = "[email protected]";
    $mes = "Name: $name \nE-mail: $email \nPhone: $sub \nText: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Message sent successfully. Visit the main page <a href='#'>MARKUHA</a>,and you can continue your browsing";}
    else {echo "The error message was not sent!";}
     
    }
    else
    {
    echo "Fill out all the fields !!!";
    }
    ?>
     
    <h2>Order form.</h2>
     
    <form name="MyForm" action="" method="post">
    <p><input class="input" name="name" ENGINE="text" style="width:15%" /> Name*</p>
    <p><input class="input" name="email" type="text" style="width:15%" /> E-mail*</p>
    <p><input class="input" name="sub" type="text" style="width:15%" /> Phone*</p>
    <p>Message:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
    <p><input id="submit" value="Send" type="submit" /></p>
    </form>
     
     

    Зарание Спасибо!

  125. Avatar photo Степан => автор блога

    Здравствуйте, Денис! Все верно у Вас. Должно работать, я даже перепроверил на локальном сервере. Посмотрите, не приходят ли письма в СПАМ?!

  126. Avatar photo Степан => автор блога

    В принципе, могу попробовать написать такой скрипт, но только под заказ!

  127. Эдуард

    Здравствуйте!
    Как к вашей форме добавить скачивание файла, который лежит в корне сайта?

  128. Avatar photo Степан => автор блога

    Здравствуйте, Эдуард! Зачем это Вам нужно! Вам будут отправлять пользователи письма с вашего же сайта с ссылкой на скачивание файла, который лежит у Вас на хостинге. Не совсем понимаю для чего все это!

  129. Семен

    Стоит сказать что есть еще один способ разместить форму обратной связи на своем сайте – это воспользоваться онлайн сервисом, который предоставляет визуальный конструктор веб-форм. Мне например нравится русскоязычный сервис – formdesigner.ru. Как по мне это отличный вариант для новичков, которым не хватает навыков программирования.

  130. Денис

    Спасибо вам большое Степан!
    Это была проблема с хостингом!

  131. Андрей

    Доброго времени суток Степан, на свой сайт установил вашу форму обратной связи (ФОРМУ 2) после отправки пишет Сообщение отправлено успешно. Но на почту ничего не приходит. Подскажите как исправить, заранее благодарен.

  132. Евгений

    :| Здравствуйте на примере вашей формы делаю свою. Подскажите пожалуйста вот есть обязательные поля для заполнения а есть не обязательные как сделать не обязательные? у вас если не заполнить пишет “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”;
    У меня в форме допустим можно прикрепить картинку но это не обязательно и вообще картинка придет на почту или нет???

  133. Avatar photo Степан => автор блога

    Здравствуйте, Андрей!
    Проверьте 54 строку в коде:

    $address = "[email protected]";
    

    Вместо [email protected] должен быть ваша почта.
    Либо проверьте в СПАМе.
    Смотрел Ваш сайт. Советую форму сделать в сплывающем окне, либо форму оставить на странице.

  134. Avatar photo Степан => автор блога

    Здравствуйте, Евгений!
    Удалите с кода:

    if ($send == 'true')
    {echo "Сообщение отправлено успешно. Перейдите на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,и вы сможете продолжить ваш просмотр";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Заполнили все поля!!!";
    }
    
  135. Евгений

    Я бы с удовольствием но проверка быть должна и сообщение типа “сообщение отправлено через 6 сек вы будете перенаправлены” тоже должно быть в чем дело не знаю посмотрите плиз код?

     <?php
    
    1.if (isset($_POST['adres'])) {$name = $_POST['adres']; if ($adres == '') {unset($adres);}}
    2.if (isset($_POST['name'])) {$email = $_POST['name']; if ($name == '') {unset($name);}}
    3.if (isset($_POST['telefon'])) {$sub = $_POST['telefon']; if ($telefon == '') {unset($telefon);}}
    4.if (isset($_POST['email'])) {$body = $_POST['email']; if ($email == '') {unset($email);}}
    5.if (isset($_POST['vidvorot'])) {$body = $_POST['vidvorot']; if ($vidvorot == '') {unset($vidvorot);}}
    6.if (isset($_POST['vaznel'])) {$body = $_POST['vaznel']; if ($vaznel == '') {unset($vaznel);}}
    
     
    if (isset($adres) && isset($name) && isset($telefon) && isset($email) && isset($vidvorot) && isset($vaznel)){
     
    $address = "[email protected]";
    $sub  = "Сообщение с моего нового сайта!!!";
    $mes = "Адрес: $adres \nИмя: $name \nТема: $sub \nТелефон: $telefon \nE-mail: $email \nВид ворот: $vidvorot \nВажн Эл: $vaznel";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='#'>localhost/connect.loc/www/index.html</a>,где сможете продолжить ваш просмотр";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?> 

    И еще плюс ко всему вылетает ошибка 1,3,5,6 неопределенная форма???

  136. Евгений

    И постоянно пишет “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля! ” хотя я заполняю все до единого???

  137. Евгений

    ??? Степан я ведь жду)

  138. Avatar photo Степан => автор блога

    зачем в строке 3 – 8 стоять вначале цифры (1,2,3,4,5,6)?
    Внимательно копируйте код и не будет ошибок.

    if (isset($_POST['adres'])) {$name = $_POST['adres']; if ($adres == '') {unset($adres);}}
    if (isset($_POST['name'])) {$email = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['telefon'])) {$sub = $_POST['telefon']; if ($telefon == '') {unset($telefon);}}
    if (isset($_POST['email'])) {$body = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['vidvorot'])) {$body = $_POST['vidvorot']; if ($vidvorot == '') {unset($vidvorot);}}
    if (isset($_POST['vaznel'])) {$body = $_POST['vaznel']; if ($vaznel == '') {unset($vaznel);}}
    
  139. Avatar photo Степан => автор блога

    Без знания php, Вам новую форму написать не выйдет.
    Дам подсказку. Все дело в 11 строке.
    Все ли переменные там есть, которые присутствуют в вашей форме?

  140. Avatar photo Степан => автор блога

    Простите, Евгений! Вместо того, чтобы ждать, почитали бы основы php.
    Я понимаю, что на готовенькое желающих много. Если помогаю бесплатно, то иногда, нужно и подождать.
    Если будете платить как за заказ, другое дело, можете и заявлять в комментариях такие слова, как “Степан я ведь жду”. ;)

  141. Евгений

    :!: Все нормуль у меня получилось. Нумерцию эту я тут написал ее в моем php файле нету. А про 11 строку я сразу понял что она для обязательных форм заполнения. А все дело оказалось

    {$name = $_POST['adres']
           {$email = $_POST['name']
     

    переменные укзаны не верно.)
    А вместо того чтобы сидеть я читаю большую книгу Дмитрия Котеров, Алексей Костарев PHP 5.
    Спасибо Вам за советы

  142. Евгений

    Могу и заплатить сколько будет стоить форма регистрации php с личным кабинетом у каждого пользователя и платежкой в ней?

  143. Avatar photo Степан => автор блога

    В зависимости от сайта/движка и того, что Вы именно хотите (системы лояльности есть скидочные и накопительные, система управления пользователями с ролями и без).
    Примерная цена от $10 до $500.

  144. Андрей

    Доброго времени суток еще раз Степан подскажите почему когда создаю файл с расширением php в корневой папке сайта при запросе: адрес сайта/файл php выдает
    Not Found

    The requested URL /cgi-bin/php4.fcgi/kontakt.php was not found on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
    файл же создан и находится в корневой папке. Как исправить? Заранее благодарен.

  145. Avatar photo Степан => автор блога

    Здравствуйте, Андрей!
    Есть подозрение на то, что во всем виноват файл “.htaccess”
    Попробуйте временно удалит “.htaccess”. Если все заработает, значит проблема была в этом файле и причину ошибки нужно искать в нем.

  146. Николай

    Степан спасибо за рабочую форму обратной связи. У меня стояла раньше, но возврат на сайт не работал. А ваша работает! У меня старая перестала работать поставил вашу. Оказалось с 18 мая маил ввёл жёсткие меры по борьбе со спамом и перестали письма с сайта приходить. Пришлось переходить на яндекспочту там всё в порядке пока.
    Меня одно только настораживает что в вашей форме нет капчи. Может подскажите как добавить в эту же форму?

  147. Аполлинария

    Здравствуйте!
    При отправке сообщения выдает ошибку- “500: Не удалось выполнить запрос из-за внутренней ошибки на сервере.”
    В чем может быть проблема?

  148. Аполлинария

    Сделала по второму варианту, работает!Спасибо!)

  149. Avatar photo Степан => автор блога

    Здравствуйте, Николай! Вы мне дали новую интересную тему. Я думаю на этой неделя я выложу парочку статьей по теме “простейшая для формы обратной связи”.
    Сможете подождать?

  150. Avatar photo Степан => автор блога

    Здравствуйте!
    Это проблема на сервере.
    Нужно написать письмо хостинг провайдеру.

  151. Avatar photo Степан => автор блога

    Пожалуйста!

  152. Дмитрий

    Степан спасибо за прекрасный скрипт! Все супер! Но вот есть одна проблема, текст приходит в виде черных квадратиков (ютф проверял) что может быть? заранее спасибо!

  153. Avatar photo Степан => автор блога

    “текст приходит в виде черных квадратиков” – это только проблема в кодировке. Почитайте вот эту статью

  154. Vadim

    Здравствуйте.Степан!
    3 вечера прогоняю Ваши формы обратной связи.не идут. 1вариант нулевой.2-сообщение уходит но не доходит до ящика.Сайт на бесплатном хосте с поддержкой PHP.Можете ли мне помочь разобраться .готовых решений не ищу.С уважением. жду ответа

  155. Avatar photo Степан => автор блога

    Здравствуйте, Вадим!
    Вы заменили электронную почту?

    $address = "[email protected]";
  156. Vadim

    Здравствуйте.Степан ещё раз. да. я всё перепроверил. работают оба варианта.но до ящика не доходит.скорее всего-проблема в бесплатном хостинге.Для уточнения могу прислать коды и данные сайта.т.к этот сайт своего рода учебный полигон а я человек с небольшим опытом в этом делe(пока).Ваше решение.стоит ли возиться?

  157. Avatar photo Степан => автор блога

    Здравствуйте, Вадим! Можете проверит форму на локальном сервере Денвере. Подробней смотрите тут: /vebmasteru/chto-eto-takoe-lokalnyj-server-denvera-denwer-i-kak-ego-ustanovit-na-kompyuter.html/

    Письмо должно прийти на ваш компьютер (Диск локального сервера/tmp/!sendmail)

  158. Vadim

    Отличное решение вопроса-а я в попыхах сразу не учёл этот вариант.как только “оформлю” это хозяйство-обязательно отпишу. спасибо за отзывчивость

  159. Avatar photo Степан => автор блога

    Пожалуйста!

  160. Лилия

    Пишет Ошибка, сообщение не отправлено!

  161. Avatar photo Степан => автор блога

    Дайте ссылку на сайт, где форма

  162. Avatar photo Степан => автор блога

    Лилия, проверил я еще раз свою форму, все работает. Смотрите в обработчик, там где-то какая-то переменная не правильно прописана или вообще нету.

  163. Вася

    Здравствуйте Степан. Вы случайно не узнали решение с mail.ru, почему не работает? Только что попробовал на хостинге, на поддомене своего сайта потестировать обе формы. Все работает хорошо и с почтой Гугл и Яндекс, но вот Мэйл.ру никак, письма не доходят, хотя отправка идет. Причем интересно, что не работает как если указать почту мыла $address. Так и даже если просто в форме отправитель оставит почту на мыле, а в $address будет стоять почта яндекса к примеру.

  164. Алена

    Здравствуйте! попробовала форму №2, все работало, но письма приходили только с яндекс почты или если краказябры просто написать вместо адреса, с майла не доходят. Еще я добавила строку “Телефон” и где-то напортачила, теперь вообще не отправляется посмотрите плиз

  165. Avatar photo Степан => автор блога

    Здравствуйте, Василий!
    Проверьте письма в СПАМе, возможно mail.ru их туда отправила.
    Письма по любому должны приходить.
    Отпишитесь о результате.

  166. Avatar photo Степан => автор блога

    Здравствуйте, Алена!
    Посмотрите письма в спаме (майл.ру) любит их туда отправлять.
    По поводу краказябров, поменяйте кодировку в обработчике (читать).
    Вы выслали не полный код, а точнее обрезанный. Как отсылать код в комментариях, смотрите внизу над кнопкой “Отправить комментарий”.
    Если Вам нужно написать обработчик, готов написать для вас за символическую оплату.

  167. Дмитрий

    Не могу понять. как и что не исправлял, сервер при отправке запроса присылает ошибку 405 “Method Not Allowed”

    The requested method POST is not allowed for the URL /mail.php.

    как это можно побороть? Спасибо!

  168. Avatar photo Степан => автор блога

    1. У Вас есть файл “mail.php” с обработчиком формы?
    2. Напишите хостеру, возможно что-то у них, возможно нет поддержки php.

  169. Дмитрий

    Спасибо, Степан! Проблема была как вы и сказали в сервере. Исправили. Теперь другой прикол: все поля заполнены, выводит сообщений, что все успешно отправлено, но потом вместо перенаправления на головной сайт, выводит сообщение “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”

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

  170. Avatar photo Степан => автор блога

    И Вам, Дмитрий, спасибо за красивые слова.
    Распишете в комментарии, что вы сделали и в каких файлах. В общем все, что касается формы.
    Код вставляйте в комментариях через [code].
    Посмотрю.

  171. Денис

    Здравствуйте Степан и все обсуждающие. Спасибо за форму связи. Хочу поделится решением проблемы адресами с майл.ру.
    в файле обработчике (по умолчанию mail.php) нужно изменить в строке:

    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

    значение

    nFrom:$email

    изменить на

    nFrom:$вашадрес@вашсайт.ру

    не майл.ру только. И письма будут идти с этого адреса, а не с того который указал отправитель, в том числе и с майл.ru. При этом в теле письма будет указан адрес который отправитель заполнил в форме.

  172. Денис

    “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!”

    Возможно в html добавили поле например телефон:

    <p><input class="input" name="etel" ENGINE="text" style="width:50%" /> № телефона*</p>

    то есть добавлено значение

    name="etel"

    у меня так, но может быть и

    name="phone"

    не суть. То в mail.php так же надо добавить этот атрибут:

    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['etel'])) {$etel = $_POST['etel']; if ($etel == '') {unset($etel);}}
    if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
     
    if (isset($name) && isset($email) && isset($etel) && isset($sub) && isset($body)){
     
    $address = "почта@mail.ru";
    $mes = "Имя: $name \nE-mail: $email \nТел: $etel \nТема: $sub \nТекст: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:[email protected]");
    if ($send == 'true')
  173. Дмитрий

    Степан, в общем пару дней ковырялся, не могу допетрить ))) Понял, что проблема в то, что добавил поля. Поля в обработчике прописал. Но явно где-то в моем днк проблема, раз не вижу источник проблемы. Вот код из обработчика:

    <meta http-equiv='refresh' content='10; url=http://atvsalon.ru'>
    <meta charset="windows-1251" />
    <?php
    if (isset($_POST['fio'])) {$name = $_POST['fio']; if ($fio == '') {unset($fio);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
    if (isset($_POST['model'])) {$body = $_POST['model']; if ($model == '') {unset($model);}}
    if (isset($_POST['vznos'])) {$body = $_POST['vznos']; if ($vznos == '') {unset($vznos);}}
     
    if (isset($fio) && isset($email) && isset($sub) && isset($body) && isset($model) && isset($vznos)){
     
    $address = "[email protected]";
    $mes = "Имя: $fio \nE-mail: $email \nТелефон: $sub \nРегион проживания: $body \nМодель: $model \nПервоначальный взнос: $vznos";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
    if ($send == 'true')
    {echo "Сообщение отправлено успешно, через 10 секунд Вы будете направлены на главную страницу;}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
     

    Вот html код:

     <form name="credit" action="http://www.site.ru/mail2.php" method="post">
    <p class="text2"><input class="input" name="fio" ENGINE="text" style="width:55%" /> Ваше ФИО (полностью)</p>
     
    <p class="text2"><input class="input" name="email" type="text" style="width:55%" /> Электронная почта</p>
     
    <p class="text2"><input class="input" name="sub" type="text" style="width:55%" /> Номер телефона</p>
     
    <p class="text2"><input class="input" name="body" type="text" style="width:55%" /> Регион проживания</p>
    
    <p class="text2"><input class="input" name="model" value="Leopard" type="text" style="width:55%" /> Модель техники</p>
    
    <p class="text2"><input class="input" name="vznos" type="text" style="width:55%" /> Первоначальный взнос</p>
    
    <p><input id="submit" value="&nbsp;Отправить заявку&nbsp;" type="submit" /></p>
    </form> 

    :?:

  174. Дмитрий

    в 4 строке нашел ошибку, name вместо fio, исправил, но не помогло :|

  175. ро

    здравствуйте, сделал форму, вроде всё по примеру, выложил в денвер, выдаёт такую ошибку

    Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in Z:\home\192.168.1.227\www\php\contact-form.php on line 32

    подскажите, что это значит?

    <?php
    
    /* Задаем переменные */
    $name = htmlspecialchars($_POST["name"]);
    $email = htmlspecialchars($_POST["email"]);
    $tel = htmlspecialchars($_POST["tel"]);
    $message = htmlspecialchars($_POST["message"]);
    $bezspama = htmlspecialchars($_POST["bezspama"]);
    
    /* Ваш адрес и тема сообщения */
    $address = "[email protected]";
    $sub = "Сообщение с hot-potato.studio";
    
    /* Формат письма */
    $mes = "Сообщение с сайта Hot-potato.studio\n
    Имя отправителя: $name   
    Электронный адрес отправителя: $email
    Телефон отправителя: $tel
    Текст сообщения:
    $message";
    
    
    if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
    {
    /* Отправляем сообщение, используя mail() функцию */
    $from  = "From: $name <$email> \r\n Reply-To: $email \r\n"; 
    if (mail($address, $sub, $mes, $from)) {
    	header();
    	echo 'Письмо отправлено';}
    else {
    	header('Refresh: 5; URL=http://hot-potato.studio');
    	echo 'Письмо не отправлено, через 5 секунд вы вернетесь на главную ;}
    }
    exit; /* Выход без сообщения, если поле bezspama чем-то заполнено */
    ?>
  176. Avatar photo Степан => автор блога

    Здравствуйте, Денис!
    Не верно Вы записали, нужно без знака “$”:

    nFrom:вашадрес@вашсайт.ру
    

    Если уже хотите заменит “nFrom:$email” на Ваш email, то сделать можно вот так:

    nFrom:$address");
    

    Спасибо, Денис за комментарий!

  177. Avatar photo Степан => автор блога

    В строке №8-№9 у Вас ошибка:

    if (isset($_POST['model'])) {$body = $_POST['model']; if ($model == '') {unset($model);}}
    if (isset($_POST['vznos'])) {$body = $_POST['vznos']; if ($vznos == '') {unset($vznos);}}
    

    нужно вот так:

    if (isset($_POST['model'])) {$model = $_POST['model']; if ($model == '') {unset($model);}}
    if (isset($_POST['vznos'])) {$model = $_POST['vznos']; if ($vznos == '') {unset($vznos);}}
    
  178. Avatar photo Степан => автор блога

    Проверьте строку №8-№9

  179. Avatar photo Степан => автор блога

    Здравствуйте!
    Ошибка в 32 строке “Z:\home\192.168.1.227\www\php\contact-form.php on line 32”

    echo 'Письмо не отправлено, через 5 секунд вы вернетесь на главную ;}

    не стоит перед “;” одинарная кавычка ” ‘ “, вот так:

    echo 'Письмо не отправлено, через 5 секунд вы вернетесь на главную';}

    пробуйте.

  180. ро

    здравствуйте ещё раз. теперь он другую ошибку нашел в пустом хэдере в 28 строке, заполнил её, и теперь вот такая(((
    что-то я в php не могу разобраться пока(((

    Warning: Cannot modify header information – headers already sent by (output started at Z:\home\192.168.1.227\www\php\contact-form.php:1) in Z:\home\192.168.1.227\www\php\contact-form.php on line 28

    перевёл файл php в утф-8 без бом, стал показывать без ворнинга, но иероглифы(((

    и вроде бы это не страшно, на почту указанную письмо почему-то не приходит

    <?php
    
    /* Задаем переменные */
    $name = htmlspecialchars($_POST["name"]);
    $email = htmlspecialchars($_POST["email"]);
    $tel = htmlspecialchars($_POST["tel"]);
    $message = htmlspecialchars($_POST["message"]);
    $bezspama = htmlspecialchars($_POST["bezspama"]);
    
    /* Ваш адрес и тема сообщения */
    $address = "[email protected]";
    $sub = "Сообщение с hot-potato.studio";
    
    /* Формат письма */
    $mes = "Сообщение с сайта Hot-potato.studio\n
    Имя отправителя: $name   
    Электронный адрес отправителя: $email
    Телефон отправителя: $tel
    Текст сообщения:
    $message";
    
    
    if (empty($bezspama)) /* Оценка поля bezspama - должно быть пустым*/
    {
    /* Отправляем сообщение, используя mail() функцию */
    $from  = "From: $name <$email> \r\n Reply-To: $email \r\n"; 
    if (mail($address, $sub, $mes, $from)) {
    	header('Refresh: 5; URL=http://hot-potato.studio');
    	echo 'Письмо отправлено';}
    else {
    	header('Refresh: 5; URL=http://hot-potato.studio');
    	echo 'Письмо не отправлено, через 5 секунд вы вернетесь на главную' ;}
    }
    exit; /* Выход без сообщения, если поле bezspama чем-то заполнено */
    ?>
  181. ро

    вроде с кодировкой разобрался, и он пишет письмо отправлено, но оно на почту не приходит((

  182. Александр

    Степан, здравствуйте!

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

  183. Дмитрий

    Степан, вы – гений. Спасибо за наводку! Все получилось :!:

  184. Avatar photo Степан => автор блога

    Пожалуйста, Дмитрий!

  185. Avatar photo Степан => автор блога

    Попробуйте по совету Дениса в комментариях “Денис 01.10.2016 в 14:32”

  186. Avatar photo Степан => автор блога

    За комментируйте строку 28

    //header('Refresh: 5; URL=http://hot-potato.studio');
    

    Результат не изменился?

  187. Avatar photo Степан => автор блога

    Упсссссссс! Александр, не сделал.
    Нужно будет исправиться и этот вопрос подтянуть

  188. ро

    здравствуйте ещё раз, я ту вас замучил наверное уже, сделал всё, как написано, результат таков: форма пишет, что всё ок, а письмо на почту так и не приходит((( даже попробовал сделать форму по примеру Дениса. всё равно не приходит! даже уже не пойму в чём проблема! может в денвере??

  189. ро

    разобрался, приходит, но кракозябры в почте(((
    получается надо с кодировкой играться?

  190. ро

    совершенно не пойму! везде стоит одинаковая кодировка utf-8, но всё равно приходит вот такое! как это исправить? если ставил без бом, то у меня на сайте появляются эти иероглифы. X-Sendmail-Cmdline: sendmail.pl -t -i
    To: хххххххххххх@gmail.com
    Subject: Сообщение с hot-potato.studio
    X-PHP-Originating-Script: 0:contact-form.php
    From: Родион Мальцев
    Reply-To: ххххххххх@gmail.com

    Сообщение с сайта Hot-potato.studio

    Имя отправителя: Родион Мальцев
    Электронный адрес отправителя: хххххххххххх@gmail.com
    Телефон отправителя: +7964ххххххххх
    Текст сообщения:
    прарарарара

  191. ро

    всё перевёл в ANSI и всё заработало, почему так? и нормально ли ANSI использовать?

  192. Нариман

    Помойму проще использовать готовый решения с широким функционалом, например конструктор форм testograf.ru
    Огромный выбор типов полей + возможность загрузки файла. Также все это бесплатно!
    Подробнее о том, как создать форму обратной связи здесь: testograf.ru/ru/blog/forma-obratnoj-svyazi.html

  193. Александр

    Добрый день Степан, 1 вариант испробовал, все работает, но когда приходит письмо вместо русских и литовских букв крючки, пробовал варианты с кодировками, не помогло.

  194. Avatar photo Степан => автор блога

    Здравствуйте, Александр. Но проблема действительно в кодировке.
    Вы правильно кодировку ставите. Почитайте статью, как правильно ставить кодировку тут. Так как мета тег это еще не достаточно, чтобы правильно отображалась кодировка на страницн

  195. Avatar photo Степан => автор блога

    Для кого как.
    Мне проще самому написать форму обратной связи, чем пользоваться готовым решением.
    Не вижу никаких сложностей в создании обработчика.

  196. Avatar photo Степан => автор блога

    Если все заработало, то не вижу проблем в том, чтобы использовать ANSI.

  197. Avatar photo Степан => автор блога

    Попробуйте в другой кодировке, в кириллице.

  198. Avatar photo Степан => автор блога

    да, верно

  199. Olga

    Добрый день! Если честно, не поняла. Сайт php сделала, а как вставлять форму на нужную страницу в нужном месте?

  200. Avatar photo Степан => автор блога

    Здравствуйте, Ольга!
    Скопируйте весь код (Способ-2) и вставьте в пустой Ваш файл и форма заработает.

  201. Avatar photo Степан => автор блога

    Вы какой способ используете 1 или 2 ???

  202. Александр

    Степан, здравствуйте!
    А Вы так и не сделали еще отправку с капчей?

  203. Tim

    Здравствуйте! вставил форму по Способу-1, все время пишет “Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!” хотя они все заполнены.подскажите пожалуйста в чем может быть причина

    код обработчика:

    <meta http-equiv='refresh' content='1; url=http://trezorrussia.com/#contact'>
    <meta charset="UTF-8" />
    <?php
    if (isset($_POST['NAME'])) {$name = $_POST['NAME']; if ($name == '') {unset($name);}}
    if (isset($_POST['EMAIL'])) {$email = $_POST['EMAIL']; if ($email == '') {unset($email);}}
    if (isset($_POST['TITLE'])) {$sub = $_POST['TITLE']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['MESSAGE'])) {$body = $_POST['MESSAGE']; if ($body == '') {unset($body);}}
     
    if (isset($name) && isset($email) && isset($sub) && isset($body)){
     
    $address = "[email protected]";
    $mes = "Имя: $name \nE-mail: $email \nТема: $sub \nТекст: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$adress");
    if ($send == 'true')
    {echo "Сообщение отправлено успешно";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
    

    код html:

    <form action="mail.php" method="post">
                                    <fieldset>
                                        <p><input ENGINE="text" value="" placeholder="NAME" class="field"></p>
                                        <p><input type="email" value="" placeholder="EMAIL" class="field"></p>
                                        <p><input type="text" value="" placeholder="TITLE" class="field"></p>
                                        <p><textarea cols="2"  rows="2" placeholder="MESSAGE"></textarea></p>
                                        <p><input type="submit" value="send" class="button"></p>
                                    </fieldset>
    
  204. Avatar photo Степан => автор блога

    Здравствуйте!
    Код написан не верно.
    В форме нет “name=”NAME”, name=”EMAIL”” и т. д.

  205. Tim

    Степан спасибо Вам! все добавил, заработало

  206. Avatar photo Степан => автор блога

    Пожалуйста! Заходите почаще на блог, буду рад Вашим новым комментариям!

  207. Ольга

    Добрый день!
    Форму вставила на страницу, спасибо.
    Но не работает – письма не доходят, подозреваю, не так указала путь к файлы mail.hp
    И, главное, при отправке сообщения выскакивает, что сообщение отправлено и через 6 секунд вы будете перенаправлены на сайn bloggood.ru
    Степан, как это убрать? Где изменить запись?

  208. Ольга

    Ой, сообщение поправила. )
    А вот как написать путь к файлам корректно?
    Если файл mail.php лежит в той же папке, public html, где и все страницы сайта, значит ли это, что нужно указывать путь, как к странице сайт.ru/mail.hph?
    Заранее спасибо!

  209. Avatar photo Степан => автор блога

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

  210. Ольга

    Степан! Все заработало! Это сообщение не доходят, когда я пытаюсь со своего адресе сама себе послать, а с других адресов, или если просто указать 123 вместо адреса – доходят.
    Извините за беспокойство!
    И еще раз СПАСИБО!

  211. Avatar photo Степан => автор блога

    Добрый день, Ольга!
    В файле “mail.php” в строке № 15

  212. Avatar photo Степан => автор блога

    У вас ошибка не “сайт.ru/mail.hph” а “сайт.ru/mail.php”.
    Можно вот так “mail.php”, если форма находится рядом с mail.php
    Вот, посмотрите: /html-osnovi-primer-podskazki/kak-pravilno-ukazat-puti-k-izobrazheniyam-na-sajte.html/

  213. Avatar photo Степан => автор блога

    Пожалуйста, Ольга!
    Обращайтесь, если нужно будет!

  214. Игорь Васильевич

    Уважаемый Степан!
    Прошу Вас помочь, иначе сойду с ума. Не первый день бьюсь с отправкой почты с сайта. Два файла: mail.php и contacts.html Оба файла в utf-8. Сам сайт на хостинге ISP тоже в utf-8.
    Проблема: писма на ящик приходят, но в зябликах в таком виде –

    Имя пославшего: Игорь 
    Электронный адрес: [email protected] 
    Контактный телефон: 1111111111 
    Сообщение: Проверка с сайта
    

    В Notepad преобразовал (хотя до перекодировки было так

    Имя пославшего: Игорь 
    Электронный адрес: [email protected] 
    Сообщение: ПРОВЕРКА
    

    Вот код mail.php

     <?php
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
    if (empty($name))
    {
    echo "<b>Не указано имя!<p>";
    echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
    exit;
    }
    else
    if (empty($email))
    {
    echo "<b>Не указан e-mail!<p>";
    echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
    exit;
    }
    else
    if (empty($mess))
    {
    echo "<b>Сообщение не написано!<p>";
    echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
    exit;
    }
    else
    $to = "[email protected]"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
    $charset = "UTF-8";
    $subject = "Сообщение с вашего сайта";
    $message = "Имя пославшего: $name \nЭлектронный адрес: $email \nКонтактный телефон: $phone \nСообщение: $mess";
    $send = mail ($to,$subject,$message);
    if ($send == 'true')
    {
    echo "<b>Спасибо за отправку вашего сообщения!<p>";
    echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
    }
    else
    {
    echo "<p><b>Ошибка. Сообщение не отправлено!";
    }
    ?> 

    Отправка почты идет со страницы *******/contacts.html

    Поменял ящик на @ukr.net иначе на @rambler письма шли в спам.

    Может Вы разберетесь? Спасибо за ответ.

  215. Игорь Васильевич

    Пока ждал и не дождался ответ, все сделал сам. Заработало. Очень интересная была причина.
    Хотелось бы увидеть работы, по созданию сайтов, автора блога, ссылок на них не увидел.

  216. Avatar photo Степан => автор блога

    Здравствуйте, Игорь.
    Кодировку нужно указать не только в мета-тегах, но преобразовать файл.
    Посмотрите вот тут.
    Преобразуйте файл “mail.php” так как написано в статье на UTF-8.

  217. Avatar photo Степан => автор блога

    Видите как чудно получается, оказывается если захотеть, то можно и самому все сделать а не ждать что за Вас все сделают.
    Вы хотите сделать заказ?
    Могу показать работы.
    Сайт будет адаптивный и по WordPress.
    Цена от 100$.
    “Хотелось бы увидеть работы, по созданию сайтов, автора блога, ссылок на них не увидел.” – В какой из статей, вы хотели бы увидит мои работы?
    Интересно выглядело бы, статья про HTML форму и тут, я выкладываю ссылки на сайты, которые делал. Браво!!!!!
    Чтобы увидеть мои работы, Игорь, не нужно писать в комментарий это, достаточно воспользоватся формой обратной связи и сделать заказ.

  218. Avatar photo Степан => автор блога

    Здравствуйте, Александр!
    Вот, посмотрите тут:
    /php-priemchiki/forma-obratnoj-svyazi-s-kapchej-na-php.html/

  219. Наталья

    А подскажите, пожалуйста, как эту замечательную форму отцентрировать по горизонтали. Чтобы она по центру страницы отображалась. И при этом с левой стороны была выровнена, как сейчас.

    Есть ли варианты, кроме как в div оборачивать, его центрировать, а содержание по левому краю выравнивать?

  220. Avatar photo Степан => автор блога
    <style>
    .ddd
    {
    margin-left: 40%;
    }
    </style>
    <div class="ddd">
    <h2>Форма обратной связи.</h2>
    <form name="MyForm" action="/mail.php" method="post">
    <p><input class="input" name="name" ENGINE="text" style="width:15%" /> Ваше имя*</p>
     
    <p><input class="input" name="email" type="text" style="width:15%" /> Электронная почта*</p>
     
    <p><input class="input" name="sub" type="text" style="width:15%" /> Тема сообщения</p>
     
    <p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
    <p><input id="submit" value="Отправить" type="submit" /></p>
    </form>
    </div>
    
  221. Наталья

    Да, этот вариант, единственный, приходил в голову, но руки пока не дошли, Новый Год на носу, как-никак :) Да и навыков web-программирования откровенно маловато, чтобы легко и непринужденно выровнять форму.

    Спасибо! И с Новым Годом!

  222. алекс

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

  223. Avatar photo Степан => автор блога

    Здравствуйте!
    PHP

    <meta http-equiv='refresh' content='6; url='>
    <meta charset="UTF-8" />
    <?php
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['tel'])) {$tel = $_POST['tel']; if ($tel == '') {unset($tel);}}
    if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
     
    if (isset($name) && isset($tel) && isset($sub) && isset($body)){
     
    $address = "[email protected]";
    $mes = "Имя: $name \nтелефон: $tel \nТема: $sub \nТекст: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>
    

    и в HTML

    <h2>Форма обратной связи.</h2>
    <form name="MyForm" action="/mail.php" method="post">
    <p><input class="input" name="name" ENGINE="text" style="width:15%" /> Ваше имя*</p>
     
    <p><input class="input" name="tel" type="text" style="width:15%" /> телефон*</p>
     
    <p><input class="input" name="sub" type="text" style="width:15%" /> Тема сообщения</p>
     
    <p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:30%" /></textarea></p>
    <p><input id="submit" value="Отправить" type="submit" /></p>
    </form>
    
  224. Екатерина

    Здравствуйте, Степан! Помогите мне, пожалуйста. Я вторую неделю делаю форму обратной связи, перепробовала бесконечное множество форм, и сегодня у меня наконец-то получилось добиться, чтобы форма выдала ответ: Ваше сообщение отправлено. и это была именно Ваша форма. Однако по ней отсылаются только ту письма, в которых в качестве эл. адреса посетитель сайта указал не почтовый ящик на mail.ru. Хостинг написал мне на мою жалобу, почему письма не приходят, такой ответ:
    Вероятно, форма на сайте подставляет адрес, указанный в поле “Электронная почта*” в качестве отправителя.

    В данном случае могут возникнуть проблемы, если пользователь укажет любой почтовый ящик на mail.ru. В данном случае рекомендуем установить в качестве адреса отправителя адрес на базе Вашего домена. Скорректировали для этого txt spf запись, чтобы разрешит отправку с сервера хостинга для данного домена:
    v=spf1 ip4:37.140.192.244 a mx include:_spf.mail.ru ~all

    По вопросу редактирования скрипта рекомендуем обратиться к разработчикам Вашего сайта, так как в данный момент производится подмена адреса отправителя в скрипте сайта.

    Как мне заменить адрес в mail.php?
    Я попробовала заменить строку №5:

    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '[email protected]') {unset($email);}}

    адрес эл.почты на базе моего домена – он тоже сформирован на mail.ru, но не в этом дело, если вставить туда адрес на

    [email protected]

    – письмо тоже не придет.
    Может, Вы мне подскажете, как мне установить в качестве адреса отправителя адрес на базе моего домена.

  225. Екатерина

    Здравствуйте, Степан! Перечитала еще раз все комментарии и нашла ответ на свой вопрос, все исправила, все работает! спасибо огромное! Подскажите еще, пожалуйста, как-нибудь можно сделать так, чтобы создать маску для поля $etel с телефонным номером, чтобы если пользователь ввел номер телефона не целиком, форма бы ему на это указала?

  226. Сергей

    Степан, здравствуйте! Использовал первый вариант размещения формы и столкнулся вот с какой ошибкой при нажатии кнопки “отправить”: Parse error: syntax error, unexpected T_NS_SEPARATOR in /var/www/vhosts/***.plsk.regruhosting.ru/httpdocs/***.ru/mail.php on line 13
    Код в обработчике:

    <meta charset="UTF-8" />
    <?php
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['sub'])) {$sub = $_POST['sub']; if ($sub == '') {unset($sub);}}
    if (isset($_POST['ring'])) {$ring = $_POST['ring']; if ($ring == '') {unset($ring);}}
    if (isset($_POST['catal'])) {$catal = $_POST['catal']; if ($catal == '') {unset($catal);}}
    if (isset($_POST['body'])) {$body = $_POST['body']; if ($body == '') {unset($body);}}
     
    if (isset($name) && isset($email) && isset($sub) && isset($ring) && isset($catal) && isset($body)){
     
    $address = "ххххххх@gmail.ru";
    $mes = "Имя: $name \nE-mail: $email \nТелефон: $sub \nОбратный звонок: $ring" \nКаталог: $catal" \nТекст: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Ваше сообщение успешно отправлено!";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    else
    {
    echo "Вы заполнили не все поля, вернитесь назад и заполните необходимые поля!";
    }
    ?>

    Код в странице:

    <h2><font face="Arial"><i>Напишите нам или закажите обратный звонок!</i></font></h2>
    <form name="MyForm" action="mail.php" method="post">
    <p><input class="input" name="name" ENGINE="text" style="width:60%" /> <font face="Arial"><i>Ваше имя</i></font></p>
     
    <p><input class="input" name="email" type="text" style="width:60%" /> <font face="Arial"><i>Электронная почта</i></font></p>
     
    <p><input class="input" name="sub" type="text" style="width:60%" /> <font face="Arial"><i>Номер телефона</i></font></p>
    
    <p><input class="input" name="ring" type="text" style="width:60%" /> <font face="Arial"><i>Вам перезвонить?</i></font></p>
    
    <p><input class="input" name="catal" type="text" style="width:60%" /> <font face="Arial"><i>Хотите ли Вы получить электронный каталог?</i></font></p>
     
    <p><font face="Arial"><i>Текст сообщения:</i></font><br /><textarea name="body" cols="1" rows="5" style="width:90%" /></textarea></p>
    <p><input id="submit" value="Отправить" type="submit" /></p>
    </form>

    Судя по тексту ошибки, понимаю, что где-то намудрил с символами в обработчике, но найти не могу – глаза сломал… Не наведете на мысль? Заранее благодарен!

  227. Сергей

    Нашел лишние ковычки, ошибка пропала. Но теперь другая беда… Письмо приходит, все нормально отображается, но поля словно не заполнены. То есть, как буд-то обработчик не подхватывает данные из формы html.
    php преобразовал вот так:

    <meta http-equiv='refresh' content='6; url=http://***.ru'>
    <meta charset="UTF-8" />
    <?php
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['sub'])) {$sub = $_POST['sub'];}
    if (isset($_POST['ring'])) {$ring = $_POST['ring'];}
    if (isset($_POST['catal'])) {$catal = $_POST['catal'];}
    if (isset($_POST['body'])) {$body = $_POST['body'];}
    
    {
     
    $address = "***@gmail.com";
    $mes = "Имя: $name \nE-mail: $email \nТелефон: $sub \nОбратный звонок: $ring \nКаталог: $catal \nТекст: $body";
    $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
    if ($send == 'true')
    {echo "Ваше сообщение успешно отправлено! Через 6 секунд Вы вернетесь на главную страницу";}
    else {echo "Ошибка, сообщение не отправлено!";}
     
    }
    
    ?>

    Проверку заполнения реализовал через html:

    <form name="MyForm" action="mail.php" method="post">
    <p><input class="input" name="name" ENGINE="text" style="width:60%" placeholder="Как к Вам обратиться (Ф.И.О.)" required /> <font face="Arial"><i><font face="Arial"> Ваше имя</font></i></p>
     
    <p><input class="input" name="email" type="email" style="width:60%" placeholder="Адрес электронной почты для ответа" required /> <font face="Arial"><i>Электронная почта</i></font></p>
     
    <p><input class="input" name="sub" type="text" style="width:60%" placeholder="Номер для обратного звонка" /> <font face="Arial"><i><font face="Arial"> Номер телефона</font></i></font></p>
    
    <p><input class="input" name="ring" type="text" style="width:60%" placeholder="да/нет" /> <font face="Arial"><i>Вам перезвонить?</i></font></p>
    
    <p><input class="input" name="catal" type="text" style="width:60%" placeholder="да/нет" /> <font face="Arial"><i>Хотите ли Вы получить электронный каталог?</i></font></p>
     
    <p><font face="Arial"><i>Текст сообщения:</i></font><br /><textarea name="body" cols="1" rows="5" style="width:90%" placeholder="Введите Ваше сообщение" required /></textarea></p>
    <p><input id="submit" value="Отправить" type="submit" /></p>
    </form>

    Если проверку обязательного заполнения возвращать в php, то выдается сообщение, словно ни одной строчки в форме не заполнено. То есть при обоих вариантах, обработчик словно “не видит” заполнения на странице. Повторюсь, посьмо приходит, отображается корректно, категории “анкеты” имеются, но они пустые. Куда глядеть тут? Подскажите)

  228. Avatar photo Степан => автор блога

    Здравствуйте,Екатерина!
    Верните строку №5, так как было и замените строку №11:

    $address = "[email protected]";

    на

    $address = "[email protected]";

    Зашел к Вам на сайт, письма отсылаются. Если они не приходят, проверьте в СПАМе

  229. Avatar photo Степан => автор блога

    Здравствуйте, Екатерина.
    Какая была причина?
    Для поля с телефоном можно создать простую подсказку, используя HTML5.
    Вот посмотрите возможности для формы тут.

  230. Avatar photo Степан => автор блога

    Здравствуйте, Сергей!
    Совершенно верно, ошибка в 13 строке, лишние двойные кавычки:

    $mes = "Имя: $name \nE-mail: $email \nТелефон: $sub \nОбратный звонок: $ring" \nКаталог: $catal" \nТекст: $body";

    нужно так:

    $mes = "Имя: $name \nE-mail: $email \nТелефон: $sub \nОбратный звонок: $ring \nКаталог: $catal \nТекст: $body";
  231. Avatar photo Степан => автор блога

    Я в коде у вас не нашел строку №9

    if (isset($name) && isset($email) && isset($sub)  && isset($ring)  && isset($catal) && isset($body)){

    Добавьте, в обработчик вот такой код:

    print_r($_POST)

    Перепишите и отправьте мне, что Вам вывелось на экран.

  232. Сергей

    А куда именно в логическую цепочку нужно добавить?

    print_r($_POST)

    В какую строчку?
    Еще раз благодарю за внимание!

  233. Avatar photo Степан => автор блога

    В обработчик перед “?>”

  234. Екатерина

    Добрый день! Причина, наверное, в хостинге (у меня рег.ру). У них, видимо, какие-то проблемы с отправкой писем с ящиков mail.ru через сайт. Они мне настроили, чтобы письма, отправленные с почты на основе доменного имени, приходили без проблем, и я изменила строку 15 формы :

    $send = mail ($address,$etel,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$address");

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

  235. Avatar photo Степан => автор блога

    Здравствуйте, Екатерина!
    Спасибо Вам за комментарий!

  236. Екатерина

    Добрый день, Степан! Огромное спасибо за статью) Делала все по 1-ому варианту – форма работает, но вот когда вставляю ваш код для оформления формы в style.css – ничего не меняется(( Форма рабочая, но совсем невзрачная((
    Помогите, пожалуйста!

  237. Avatar photo Степан => автор блога

    Здравствуйте, Екатерина! У Вас не подключен “style.css”. Как это сделать почитайте тут.

  238. Стас

    Привет, я тут диплом пишу и решил вставить обратку, но без хостинга я так понимаю это не сделать? Ваш способ почему то не подходит или я что напутал с путями (

  239. Avatar photo Степан => автор блога

    Привет, Статс!
    Можно использовать хостинг, либо скачать бесплатно и установить на свой ПК локальный сервер “Денвер” (иначе php код работать не будет)

  240. Иван

    Спасибо!

  241. Иван

    Спасибо! однако не работает. причем сработало один раз. как такое может быть,

  242. Иван

    ага. срабатывает если все писать латиницей. если кириллицей то либо не приходит либо вопросительные знаки. если указываю обратный майл от gmail то письмо проходит, если от mail.ru – то не проходит. как такое вообще может быть?

  243. Иван

    второй способ работает полностью, но если указать адрес отправителя на майл ру (list.ru ets) то письмо не приходит
    с qip.ru nm.ru письма проходят нормально. с рамблера тоже. майлру и его домены где то блокируются.

  244. Avatar photo Степан => автор блога

    Какой способ вы используете?
    Посмотрите письма в спаме.

  245. Avatar photo Степан => автор блога

    “вопросительные знаки” – у Вас не правильная кодировка файла.
    Откройте файл “mail.php” и “kontakt.html” через бесплатный редактор Notepad++ и в меню перейдите в
    “Кодировки” => “Преобразовать в UTF-8 без BOM”.
    ——
    Майл ру проверьте письма в спаме.

  246. Avatar photo Степан => автор блога

    проверьте в СПАМе

  247. Андрей

    Здравствуйте Степан!
    Я воспользовался 1 формой. Сделал изменения под свой сайт, но почему-то письма на почту не приходят. Вы могли бы посмотреть, может я что-то напутал?
    Буду благодарен за ответ.

  248. Avatar photo Степан => автор блога

    Здравствуйте, Андрей!
    Так как вы сделали, я посмотреть не могу, так как php файлы в исходном коде не отображаются.
    Проверьте почту, не попали ли письма в СПАМ.

  249. Дмитрий

    Добрый день, Степан!
    Из 2-х Ваших тем (настоящей и темы по обратной связи с капчей, попытался составить для себя одну форму обратной связи. Письма на почту приходят, с этой стороны все нормально. Вопрос в том, что нет перехода на главную страницу сайта. Появляется пустая страница с надписью. 5 секунд висит установленная в php-файле запись, потом идет запись, что не все поля заполнены (хотя заполнены все поля). Но видно, что каждые 5 секунд страница пытается обновиться. Прошу помочь с данной ошибкой.

     <meta http-equiv='refresh' content='5'; url = 'http://xxxxxxxxxx'>
    <meta charset="UTF-8" />
    <?php
    /* Проверяем существуют ли переменные, которые передала форма обратной связи. 
       Если не существуют, то мы их создаем.
       Если форма передала пустые значения мы их удаляем */
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['message'])) {$message = $_POST['message']; if ($message == '') {unset($message);}}
    if (isset($_POST['captcha_validation'])){$captcha_validation = $_POST['captcha_validation']; if ($captcha_validation == '') {unset($captcha_validation);}}
    if (isset($_POST['captcha'])){$captcha = $_POST['captcha'];}
    
     
    
    /* Проверяем заполнены ли все поля */
    if (isset($name) && isset($email) && isset($message) && isset($captcha_validation))
    {
    
    /* Проверяем правильность ввода капчи */
      if ($captcha == $captcha_validation)
      {
    	  
    /* если капча верна, отправляем сообщение */
    /* Настройки сообщения */
    $address = "[email protected]";
    $sub = "Сообщение с сайта professiya-buhgalter.ru";
    $mes = "Имя: $name nE-mail: $email nСодержание письма: n$message";
    
    /* Уведомление об отправке письма */
    $verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8rnFrom:$email");
          if ($verify == 'true')
          {echo "Спасибо, сообщение отправлено успешно! Через 5 секунд Вы будете направлены на главную страницу сайта, где сможете продолжить Ваш просмотр";}
          else {echo "Сообщение не отправлено!";}
      }
      else
      {
      echo "Вы не правильно ввели цифры с картинки";
      }
     
    
    }
    else
    {
    echo "Вы заполнили не все поля!";
    }
    ?>
    
  250. Avatar photo Степан => автор блога

    Здравствуйте!.
    Удалите строку №1
    и в самом конце сразу после тега “?> “пропишите вот так:

    <script ENGINE="text/javascript">
    setTimeout('location.replace("http://адрес_сайта")', 5000);
    </script>
    
  251. Ольга

    Здравствуйте, подскажите пожалуйста, после вставки кода,у меня отображается текстом на странице эта часть:

    Может ли быть, что Word press не видит эту часть кода?

  252. Дмитрий

    Добрый день.
    Степан, огромное спасибо. Все заработало!
    Можете уточнить: как можно подкорректировать код, чтобы после отправки сообщения пользователь переходил на ту страницу, с которой он отправил сообщение (т.е. на предыдущую), а не на главную?

    Заранее благодарен.

    <meta charset="UTF-8" />
    <?php
    /* Проверяем существуют ли переменные, которые передала форма обратной связи. 
       Если не существуют, то мы их создаем.
       Если форма передала пустые значения мы их удаляем */
    if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
    if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
    if (isset($_POST['message'])) {$message = $_POST['message']; if ($message == '') {unset($message);}}
    if (isset($_POST['captcha_validation'])){$captcha_validation = $_POST['captcha_validation']; if ($captcha_validation == '') {unset($captcha_validation);}}
    if (isset($_POST['captcha'])){$captcha = $_POST['captcha'];}
     
      
     
    /* Проверяем заполнены ли все поля */
    if (isset($name) && isset($email) && isset($message) && isset($captcha_validation))
    {
     
    /* Проверяем правильность ввода капчи */
      if ($captcha == $captcha_validation)
      {
           
    /* если капча верна, отправляем сообщение */
    /* Настройки сообщения */
    $address = "ххххххххххххххххххххххххххххххххх@gmail.com";
    $sub = "Сообщение с сайта professiya-buhgalter.ru";
    $mes = "Имя: $name \nE-mail: $email \nСодержание письма: \n$message";
     
    /* Уведомление об отправке письма */
    $verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
          if ($verify == 'true')
          {echo "Спасибо, сообщение отправлено успешно! Через 5 секунд Вы будете направлены на главную страницу сайта <a href = 'http://адрес_сайта/'>адрес_сайта</a>, где сможете продолжить Ваш просмотр";}
          else {echo "Сообщение не отправлено!";}
      }
      else
      {
      echo "Вы не правильно ввели цифры с картинки";
      }
      
     
    }
    else
    {
    echo "Вы заполнили не все поля!";
    }
    ?>
    <script ENGINE="text/javascript">
    setTimeout('location.replace("http://адрес_сайта")', 5000);
    </script>
    
  253. Avatar photo Степан => автор блога

    Здравствуйте, Ольга!
    В комментарии я так и не увидел какая часть кода у Вас отображается.
    Попробуйте специальный плагин формы для WordPress

  254. Avatar photo Степан => автор блога

    Строка №47 – замените адрес сайта с нужной страницей.

  255. Олег

    Доброго дня Степан) Вопрос как подключить определение ip отправителя, добавил поле

    if (isset($_POST['ip'])) {$ip = $_POST['ip']; if ($ip == '') {unset($ip);}}

    не выводися, Заранее спасибо.

  256. Avatar photo Степан => автор блога

    Здравствуйте, Олег!
    Вот так, выведется на экран ip отправителя:

    <?php echo $_SERVER['REMOTE_ADDR'] ?>
  257. Александр

    Добрый день.
    Пытался добавить форму обратной связи на сайт и столкнулся с проблемой, что вроде форма исправно работает, но на почту сообщения не приходят. Под конец я взял чистую форму со второго способа и исправил в ней строку почты на свою почту. В чем может быть проблема? Хостинг платный и поддерживает php скрипты. Версия PHP используется 7.0.

  258. Avatar photo Степан => автор блога

    Здравствуйте, Александр!
    Если после отправки форму вы на сайте увидели сообщение “Сообщение отправлено успешно. Перейдите на главную страницу блога…”, это значит, то форма отправилась успешно.
    Почему нет писем на почте во входящих?
    1. Строка 54 – $address = “[email protected]”; исправьте на вашу почту.
    2. посмотрите, не попали ли письма в СПАМ

  259. Александр

    Строка 54 исправлена на мою почту. В почтовом ящике в спаме тоже ничего нету. Может надо написать в техподдерку хостинга, но что писать не знаю?

  260. Avatar photo Степан => автор блога

    попробуйте вот эту форму.
    Вы можете от туда вылудить обработчик php и прописать под свою форму.

  261. Александр

    И эта форма тоже работает и не выдает ошибок, но письма на почту не приходят. Свою почту в ней менял. Видимо хоть хостинг и поддерживает php, но в настройках надо что-то включить, а что именно я не знаю.
    Хостинг используется nic.ru Тариф 200
    В техподдержку писал, но они молчат.

  262. Avatar photo Степан => автор блога

    Если техподдержка молчит больше 2 часов и хостинг оплачен только на месяц, меняйте их на более толковый.
    Я такие хостинги сразу в черный список заношу и никому их не рекомендую.

  263. Александр

    Такой вопрос. В форме есть где прописать на какой почтовый адрес отсылать письма, а вот где надо прописать с какого почтового ящика отсылать письма? Или это сам хостинг по умолчанию должен понимать?

  264. Avatar photo Степан => автор блога

    а у Вас, хоть расширение файлов “php”?
    напишите, на чем делали сайт (html, php, CMS).
    Если использовали CMS, то какой (Wotdpress, Joomla и т.д.) и куда вставляли код, в файл или в редактор.

  265. Avatar photo Степан => автор блога

    Эту работу выполняет сервер, вы только указываете куда отправлять Вам все письма. Если хостинг поддерживает php, тогда 1 форма и 2 должна была работать. Ну, по крайне мере хоть одна из них. Не знаю, либо Вы что-то не так делаете, либо проблема хостинга.
    Если хотите, за символическую оплату, установлю Вам форму.

  266. Александр

    Техподдержка ответила что функция mail на хостинге работает исправно. Дали скрипт для проверки
    Письмо с хостинга пришло на почту. Сказали еще раз проверить формы.

     <?php
    $message = "test php mail";
    $message = wordwrap($message, 70);
    mail('Ваша почта', 'My Subject', $message);
    ?> 
  267. Виктор

    Большое спасибо за ссылку. Воспользовался данным сервисом и создал нужную форму за несколько минут. К тому же там есть интеграция с amocrm и bitrix24. Это очень круто!

  268. Игорь

    Добрый день, Степан! Установил ваш скрипт обратной связи по первому способу, все работает. Спасибо! В программировании не силен. Подскажите, что внести в код mail.php, чтобы сообщение об отправке сообщения отражалось в небольшом всплывающем окне. Еще раз спасибо!
    Да, еще попробовал скрипт с капчей, но почему то не отображаются цифры. Гифки и файлы на своих местах.

  269. Avatar photo Степан => автор блога

    Здравствуйте, Игорь!
    В коде пункт №15:

    {echo "Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр";}

    добавьте к сообщению CSS класс со стилями и все (можно так):

    {echo "<p style='color: #ffffff; width: 100%; padding: 20px; background-color: #cc0000;position: fixed;'>Сообщение отправлено успешно, через 6 секунд Вы будете направлены на главную страницу блога <a href='/'>BLOGGOOD.RU</a>,где сможете продолжить ваш просмотр</p>";}
    
  270. Игорь

    Спасибо!

  271. Денис

    if (isset($_POST[‘name’])) {$name = $_POST[‘name’]; if ($name == ”) {unset($name);}}
    Можете пояснить что в этой строчке написано, что проверяется?

  272. Avatar photo Степан => автор блога

    Если переменная $_POST[‘name’] существует, то значение полученное присваиваем к переменной $name.
    Если переменная пустая, тогда удаляем ее.

  273. Александр

    Здравствуйте. А вот как сделать отправку формы если у меня сайт на локальном сервере? Использую Open Server

  274. Avatar photo Степан => автор блога

    Здравствуйте. Отправку куда? Если на реальную почту, то не как, это нужно не локальный сервер.

  275. Федор

    Хороший и просто способ создать форму, но я бы еще $_POST запросы фильтровал, а то сломают форму с сайтом. Ну а для тех кто программировать не очень умеет и любит могут stepFORM порекомендовать. А если уж сами решились форму делать, то нужно еще хотя бы капчу поставить.

  276. Слава

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

  277. Максим

    Отличная статья, правда с приходом доработать пришлось и корректность отправки не с сервера а именно какую почту укажут, в общем полезно спасибо! :gazeta: :idea: ;-)

  278. tetris

    Вот еще более простой вариант (может кому пригодится) pfka.ru/forma-obratnoj-svyazi

  279. Avatar photo Степан => автор блога

    Спасибо за комментарий

  280. Анна

    Спасибо большое, теперь все понятно)))

  281. Дмитрий

    Степан, добрый день!
    все кристально понятно и отлично работает. а как сделать такую красивую подложку как в Вашем поле отправки?)

  282. Дмитрий

    а нашел-нашел)

  283. Дмитрий

    Степан, а вот было бы однозначно круто иметь возможность прикладывать файл к сообщениям. да с фильтром по расширению. это реализуемо в рамках php send?

  284. Avatar photo Степан => автор блога

    Здравствуйте, Дмитрий.
    Через CSS (тень блока)
    /recepty-css/ten-bloka-v-css.html/

Добавить комментарий

;-) :| :x :twisted: :smokes: :smile: :shock: :sad: :rose: :roll: :razz: :pop-corne: :oops: :o :mrgreen: :lol: :idea: :grin: :gazeta: :evil: :cry: :cool: :coffe: :arrow: :???: :?: :!:

Чтобы добавить в комментарий код HTML, PHP, CSS, JavaScript, нужно сделать так: [code] ваш код [/code]

Метки:

Мои цели на 2018-2019:

1). Закончить тему «Bootstrap»

2). Закончить тему «Все про PHP и MySQL»

3). Создать портфолио и мини интернет-магазин шаблонов

4). Довести количество статей до 800

5). Добиться посещаемости 3000 человек/сутки

6). Увеличить число подписчиков до 250

Статистика по блогу

Количество записей на блоге: 810
Количество страниц на блоге: 20
Количество рубрик на блоге: 28
Количество меток на блоге: 72
Количество комментариев на блоге: 4716