Доброго здоровья всем читателям блога! Сегодня сделаем очередной шаг к оптимизации проекта, установив форму обратной связи для WordPress сайта или блога. Причем устанавливать будем, не прибегая к помощи плагинов, а используя средства HTML и PHP.
Вообще, некоторые плагины серьезно нагружают сервер, поэтому необходимо, как только возможно доступными средствами, уменьшать эту нагрузку. Например, я недавно с помощью администрирования баз данных MySql посредством phpMyadmin произвел очередную оптимизацию этих баз данных, существенно снизив их объем.
Поэтому замена плагинов HTML и PHP кодом также положительно влияет на решение данной задачи. Конечно, совсем без плагинов обойтись невозможно, но нужно стремиться к уменьшению их числа. Именно, одна из таких возможностей реализуется сегодня на ваших глазах, когда мы установим форму обратной связи WordPress. Хочу отметить, что данную форму обратной связи можно установить именно на тех страницах, где она нужна, например, на странице “Контакты”.
Создание формы обратной связи
Для того, чтобы сконструировать форму обратной связи на блоге Вордпресс, первым шагом необходимо создать файл, который будет содержать соответсвующий код. Назовем файл, к примеру, mail.php и поместим его в папку с названием вашей темы. Для этого соединимся с серверов хостинга посредством протокола FTP, используя ФТП клиент либо замечательный редактор notepad++.
После удачного соединения в правом окне редактора notepad++ будет список всех папок (директорий) и файлов вашего сайта. Выбирайте паку с вашей темой. Обычно она находится по адресу:
public_html/ваш_сайт/wp-content/themes/название_вашей_темы/
Подводите курсор к папке с названием вашей темы, кликаете по ней правой кнопкой мышки и из выпадающего меню выбираете «Create new file».
После этого появится маленькое диалоговое окно «Please enter the name of the new file», куда надо ввести название файла (например, mail.php). Эти действия позволят создать файл прямо на сервере. Теперь выберите этот файл и нажмите зеленую стрелочку, направленную вниз, с выпадающим текстом «Download file», после чего созданный файл будет загружен на компьютер и готов к редактированию. Окно для редактирования слева, введите туда следующий код:
<meta http-equiv="Content-Type" content="text/html; 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 = "goldbusinessnet@gmail.com"; $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='/'>Goldbusinessnet.com</a>";} else {echo "Ошибка, сообщение не отправлено!";} } else { echo "Вы заполнили не все поля, необходимо вернуться назад!"; } ?>
Внимание! Прежде, чем копировать, необходимо изменить следующие строчки:
10 — $address= “сюда вписываете свой адрес электронной почты, на который вам будут приходить сообщения от читателей ” (обязательно),
строчки 14, 15 и 20 можете изменить по желанию, то есть ввести свой текст, который будет отображаться.
Небольшое дополнение. Если хотите, чтобы после отправки сообщения осуществлялось автоматическое перенаправление на главную (или на любую другую) страницу блога, в созданном файле mail.php верхнюю строчку нужно заменить на следующую:
<meta http-equiv='refresh' content='6; url=/'> <meta charset="UTF-8" />
Здесь цифра 6 означает время в секундах, по истечении которого произойдет редирект на главную страницу. Естественно, вы можете изменить это число на свое. Кроме того, не забудьте вместо названия моего блога поставить адрес своего ресурса, причем не обязательно URL главной страницы.
Теперь сохраняете файл обязательно в кодировке UTF-8 (без ВОМ) в редакторе notepad++ и загружаете его на хостинг, используя зеленую стрелку «Upload file», теперь уже направленную вверх. Все, новоиспеченный файл mail.php теперь находится на хостинге, причем, поскольку он помещен в папку с названием вашей темы, то может теперь редактироваться прямо из админ панели «Внешний вид»→«Редактор»→«Редактировать темы».
Для того, чтобы форма обратной связи начала работу, необходимо вставить следующий код на любую страницу (можно создать отдельную страницу «Контакты», как у меня) в визуальном редакторе админ панели WordPress:
<h2>Форма обратной связи</h2> <form name="MyForm" action="/wp-content/themes/cloudy/mail.php" method="post"> <p><input class="input" name="name" type="text" style="width:25%" /> Ваше имя</p> <p><input class="input" name="email" type="text" style="width:25%" /> Электронная почта</p> <p><input class="input" name="sub" type="text" style="width:25%" /> Тема сообщения</p> <p>Текст сообщения:<br /><textarea name="body" cols="1" rows="5" style="width:76%" /></textarea></p> <p><input value="Отправить" type="submit" /></p> </form>
Здесь тоже надо внести кое-какие изменения. Во второй строчке вместо cloudy необходимо вписать название своей темы. Также можете отредактировать некоторые значения длины и ширины полей, а также текстового поля с помощью параметров свойства width. Теперь после сохранения форма обратной связи для блога WordPress будет выглядеть следующим образом:
После всех вышеописанных действий можно протестировать работу установленной формы. Введите адрес электронной почты и какой-нибудь текст. Если все в порядке, то вы получите на почту это сообщение. Такой вот формой обратной связи я и пользуюсь. Надеюсь, изложил понятно и доходчиво и теперь молодые вебмастера смогут эффективно использовать мой опыт. А какой формой обратной связи пользуетесь вы? Призываю делиться своим опытом в комментариях.
P.S. Уважаемые читатели, обращаю внимание на то, что текст статьи обновлен и устранены некоторые погрешности в коде, которые были допущены. Теперь форма обратной связи работает безупречно.
Да не, тогда уж лучше с плагином чем кучу кода писать)) Или даже конструктор любой использовать, например, stepform.io/ru это уж если совсем не хочется заморачиваться. А для Ворпдресса и Contact Form 7 с головой хватает.
Валера, на вкус и на цвет…У каждого свои задачи и приоритеты.
С плагинами все же намного проще и быстрей формы создавать получается, чем код писать. Вот тут в списке нашел пару плагинов unetway.com/blog/wordpress-plugins-create-forms В самый раз для новичков будут полезны.
Для меня сложновастенько выше описанное, пользовалась ранее CF7, но теперь и вам бы рекомендовало, чтобы сделать всё быстро и не заморачиваться, плагин на wordpress от Формдизайн. Спасибо автору за комментарии и помощь всем пользователям
Без плагинов это долго, да и с кодом возиться. Тем кто побыстрей, обычно Contact Form берут. Я например сейчас эти плагином начал пользоваться https://ru.wordpress.org/plugins/ucalc/
Да… Для новичков может и обработчик нормальный, Но..
Вот это вот зачем?
Совершенно не к чему. Это нужно указывать в headers. Другая сторона, в форме вообще нет никакой обработки пользовательских данных, пусть даже форма с бд не работает, но это неправильно, Очень неправильно. Вводи что хочешь.
И вот это
Я так понимаю что это взято у господина Попова. Что за ерунда… Сначала вы создаете переменную а потом ее удаляете, тогда уж вот так
Плюс нет вообще никакой валидации. Мое мнение таково, прежде чем давать такие формы новичкам, сами разберитесь в ней, что и как должно работать.
А то новички поскачивают такие горе формы и потом ходят по форумам и жалуются что видители нет защиты от XSS атак — что делать? На сайте появился левый код — где его искать?
А все почему? Потому что уважаемый господин Попов не удасужился в свое время написать нормальный курс и теперь все кто учился по нему считают себя отличными прогерами. Я против г-на Попова ничего не имею, просто видно юыло что он не научить хочет, а бабла срубить.
Нужно писать серверный код грамотно и безопасно, а не чтоб лижбы работал.
Если есть претензии по коменту ко мне, пишите, без проблем отвечу.
Александр, Вы высказали свою точку зрения, хотя я со многим не согласен касаемо Евгения Попова, по отношению к которому, по-моему, Вы слишком категоричны. Я в свое время тоже пользовался многими его продуктами и не могу сказать, что полученная информация была бесполезной.
Кстати, данная форма получена не с его уроков, так что здесь Ваши подозрения беспочвенны. Ежели Вы специалист в данной области, то вполне можете предложить свой вариант, я с удовольствием его опубликую со ссылкой на Ваш источник. Спасибо за качественный и предметный комментарий.
к сожалению, на php-7.0 форма не отправляет письма. не подскажете, как можно адаптировать форму для последней версии php?
К сожалению, Артем, я пока не занимался этим вопросом. Попробуйте погуглить.
Спасибо,форма заработала сразу и без проблем.Теперь буду настраивать.Ущё раз СПАСИБО.
Сделал все, как вы написали, форма связи все равно не работает. Выдает следующее: Запрошенную информацию найти не удалось. Возможно, будет полезен поиск по сайту.
Юрий, такое вполне возможно, тут многое зависит от темы. Попробуйте поискать в сети альтернативный вариант.
Спасибо за статью!
Ребят, попробуйте сервис от http://pozvonim.com
Простая установка на любую cms, хорошая поддержка. Не сочтите за рекламу, ссылка не реферальная, просто можно взять и попробовать на тестовый период. А потом уже решить подходит или нет. Цены как у всех, можно пакеты брать, а можно количество клиентов или минут. Лидогенерация очень высокая, а окупаемость быстрая. Может кому пригодиться мой комментарий
Игорь, вы чудо. Я от души благодарю вас за этот пост, сделала форму обратной связи по вашим рекомендациям, и у меня всё получилось, смотрю и радуюсь. Только одна просьба, если не трудно, загляните ко мне на блог в раздел «страничка обратной связи» и взгляните, как форма там смотрится, не надо ли размеры изменить? Просто я сама незрячая, вот и нужен взгляд со стороны. Ещё раз огромное спасибо за статью, удачи вам и огромного трафика блогу.
Татьяна, спасибо за отзыв. А форма обратной связи выглядит корректно и вписывается в дизайн.
Прошу прощения. Сделал все, как вы сказали. Уже все перепробовал, но когда нажимаю кнопку «отправить» вылезает следующая страница: «Oops! That page can’t be found.
It looks like nothing was found at this location. Maybe try one of the links below or a search?»
Пожалуйста помогите!
Макс, форма рабочая, проверьте все еще раз.
Спасибо! Отличная формочка! Всё работает! Ура )
установил форму, но при отправке сообщения пишет: «Ошибка, сообщение не отправлено!» В чем может быть проблема?
Владимир, почитайте выше находящиеся комментарии, здесь уже много раз разбирались похожие проблемы. Возможно, найдете решение.
Спасибо, форма пригодилась!
Только строку
нужно ставить в самом верху (выше
), иначе в некоторых случаях бывают кракозябры. Браузер должен ясно понимать, в какой кодировке текст на странице. У меня из-за этого даже refresh не срабатывало
Спасибо, форма пригодилась!
Только строку нужно ставить в самом верху (выше ), иначе в некоторых случаях бывают кракозябры. Браузер должен ясно понимать, в какой кодировке текст на странице. У меня из-за этого даже refresh не срабатывало
Зачем создавать файл mail.php, если он существует в теме для отправки сообщений от WordPress на комментарии. Тогда нужно просто на страницу «Контакты» вставить код самой таблицы и всё.
Конечно, Николай, если в Вашей теме он есть, то и хлопот меньше. Но я то публикую материал для всех читателей.
почти получилось!!!!!!! теперь когда в в форме где строка тема: если написано на русском то письмо не доходит, в чем может быть дело? может я вам скину скрин кода?
Азат, скорее всего, дело в нарушении кодировки. Она должна соответствовать той, что установлена на Вашем сайте.
Здравствуйте! подскажите пожалуйста! уже ставил и плагин Contact form 7, пишет что письмо отправлено, а у меня на почте не появляется…
теперь пытался сделать как у Вас, но тоже не вышло, когда нажимаю отправить то появляются вопросы… посмотрите пожалуйста, подскажите уже 2 день вожусь с этим http://geek-mobile.ru/?page_id=185
Контакт форм 7 выдаёт ошибку. Прям не знаю, что делать.
Ольга, Даже не знаю, что Вам посоветовать. Попробуйте альтернативный вариант в виде другого плагина или обратитесь на специализированные форумы к знатокам по данному профилю.
Обратилась к поддержке хостинга, ответили, что проблема в нехватке оперативной памяти.
Ольга, не хватает оперативки на сервисе хостинга для работы формы обратной связи? Не думал, что такое возможно… Странно.
Невозможное возможно) обновила тариф и всё заработало.
Ну, понятно, я так и думал.
Рожи просто отпад)
Да, кнопка может стать решением проблемы, по крайней мере, на первое время. Ольга, а Вы уверены, что не доходит? У Вас почта на Gmail? Если нет, попробуйте использовать гмейловскую либо загляните в папку «Спам».
Да, уверена. Почта на яндексе, но гмейл тоже попробовала, не приходит. Попроюу. контакт форм 7, на форуме сказали, что с ним всё всегда приходит) хотя не хотела плагины ставить, мне всего лишь простейшая форма нужна.
Добрый день!
Подскажите, как вставить форму в сайдбар?
Спасибо!
Ольга, а стандартный способ не проходит?
Просто хотела, чтобы форма связи отображалась на каждой странице сайта. Впрочем. я подумала уже, что можно просто кнопку с помощью виджета создать, ведущую на страницу с формой.
Извините, что тему меняю — но у меня вот уже третий вариант формы (был плагин, потом вариант без плагина) и ни с какой не получается отправить сообщение. Точнее, оно уходит, но до почты не доходит. Не подскажете, в чём может быть дело? Спасибо!
ни чего не получается все сделал как надо UTF-8 код в менеджере такой же страница опубликована выдает Ошибка 404. Страница не найдена
Вячеслав, подавляющее большинство удачно интегрирует данную форму обратной связи, я в том числе. Возможно, дают знать о себе особенности Вашей темы. Подыщите альтернативный вариант, попробуйте для начала поставить плагин.
Скажите, пожалуйста, я все делаю а у меня выодит такая ошибка. Что нужно исправить. Спасибо!!!!
Not Found
The requested URL /wp-content/themes/Splendio/mail.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.
Надежда Юрьевна, такое сообщение означает, что файл mail.php не обнаружен на сервере. Нужно проверить, правильно ли Вы его расположили.
Приветствую! Все работает))) Двое суток возился с плагинами (ни один не заработал!!!) и тут эта статья!!! Спасибо!!!
Но, у меня вопрос? Можно ли например вместо тема письма, вставить выпадающий список, а там уже в свою очередь конкретно предложенные темы обращения?
Кирилл, можно, конечно, но по этому вопросу Вам лучше обратиться узкопрофильному специалисту, который все сделает красиво.
Спасибо за форму! Все прекрасно работает)
Как сделать, что бы тема письма всегда была определенной по-умолчанию?
Поконкретнее: нужно убрать в форме на сайте «Тема сообщения» (это делается без проблем), а письмо на почту приходило с заданной в коде темой.
Сергей, не думал об этом.
С первой пробы получилось поставить форму, проверку прошла успешно! Избавился от плагина форм7 и капчи к нему. Единственное чего хотелось бы к этой форме http://series-all.ru/kontakty/ добавить css стилей, вы бы добавили в статью пару простых примеров оформления.
Хорошо, Антон, прислушаюсь к Вашему пожеланию, но пока не могу обещать, когда я вернусь к редактированию статьи. Для подбора нужных стилей гораздо проще воспользоваться встроенными инструментами разработчика, которыми к данному моменту снабжены все популярные браузеры (Хром, Мазила, IE и Opera). Они являются аналогами знаменитого расширения Firebug, о котором я писал здесь:
Вот как мне сделать так, чтобы проверил — поле не введено, и отправил через 10 секунд посетителя обратно к форме.
Какой код написать? А то в данном виде, вне зависимости от правильности заполнения полей идёт переадресация на следующую страницу, как будто бы все поля правильно заполнены.
Пример текущего кода:
Я так понимаю, что данный код необходимо удалить и вместо него что-то прописать иное для переадресации через 10 секунд на нужную страницу . Вот как это сделать не знаю. 🙁
Legal, судя по всему, форма не имеет изъянов. В случае некорректного заполнения полей должно идти перенаправление на страницу с формой, а в случае правильного заполнения — на основную страницу, причем в обоих случаях — через 10 секунд. Даже не знаю, почему форма не работает как надо. Возможно, дело в настройках сервера, иногда так бывает.
Игорь, здравствуйте. Пытаюсь воспользоваться вашим кодом, но столкнулся с похожей проблемой как у Руслана выше, только у меня не установлено никаких сторонних сервисов. Текст скопировал точно, файл в нужно кодировке, где надо адрес заменил, но все равно пишет — Ошибка, сообщение не отправлено! Если не все поля заполнить, то выводит — Вы заполнили не все поля, необходимо вернуться назад! Подскажите, пожалуйста, куда копать.
Здравствуйте, Руслан. Почитайте комментарии выше, в них есть ответы на Ваш вопрос. Особенно уделите внимание сообщениям автора под ником Велимудр. В любом случае, данная форма не панацея, может работать некорректно для некоторых сайтов. В том случае, если не удастся найти решение проблемы, попробуйте воспользоваться плагином.
Доброе утро Игорь.
Мне нужна твоя помощь по wordpress-y.
В контакте напишу.
Хорошо, Тимур.
Доброй ночи Игорёк.
Вновь я в этой теме 🙂
Не хочешь ли ты дополнить эту форму небольшой правкой на javascript ?
К примеру написать перехватчик отправки и фоново отправлять данные? можно ведь универсальной сделать её, в action оставить ссылку на файл, по идентификатору же вызывать события до отправки, то есть перехватывать нажатие, проверять на правильность, и так далее. У кого выключен JS, у тех форма сработает на чистом php, у кого включен — ajax-сом отправится.
Думаю такое дополнение будет только в пользу.
Да, Тимур, твои дополнения всегда содержательные и в тему. Дело в том, что я потихоньку обновляю материалы, но, как понимаешь, просто физически невозможно сделать это мгновенно. Но твои поправки обязательно приму к сведению.
Здравствуйте, Игорь. Очень хорошая форма. Установила — всё работает. Но возникла небольшая проблема. Мне нужны дополнительные поля «Телефон» и «Адрес», попробовала добавить телефон, но форма слетела(сдвинулись поля). Как их сделать в столбик, как у вас?
вот часть кода в 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[‘phone’])) {$phone = $_POST[‘phone’]; if ($phone == ») {unset($phone);}}
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($phone) && isset($sub) && isset($body)){
$address = «remmebel64@mail.ru»;
$mes = «Имя: $name \nE-mail: $email \nТелефон: $phone \nТема: $sub \nТекст: $body»;
а вот код на странице:
Ваше имя Электронная почта Ваш телефон Тема сообщения Текст сообщения:
Юлия, честно говоря, навскидку не определить проблему, не зная вводных. Если у Вас ресурс в сети, то пришлите ссылку на страницу с проблемной формой.
Юлия, вы пробовали после каждого добавляемого поля поставить тег переноса? =)
Но если вы копировали, input-ы должны быть обёрнуты тегами
Быть может бы промахнулись… не дописали тег… или переписали =)) в смысле больше, чем надо.
Сами по себе они не могут так себя вести, проверьте стили все, все теги, стили блока, в котором форма, стили соседних тегов…. чаще проблема возникает там, где её не ждёшь.
Напишите как они сдвинулись.
Юлия, отправил инструкции на Ваш e-mail.
Подскажите, у меня при отправке сообщения по обратной связи приходят иероглифы во всех полях, где по русски написано… не могу никак разобраться.. помогите, пожалуйста… это код из формы обратной связи… я полный чайник… попробовал все что вы писали, но так и не смог найти суть… куда именно нужно добавить строку и какую?
Станислав, иероглифы появляются при нарушении кодировки. Сделайте вот что. Когда создаете файл mail.php (такое название у меня в статье, Вы можете назвать его по-другому), после вставки кода сохраните его в UTF8 (без BOM). Если это действие положительного результата не принесет, попробуйте сохранить его просто в UTF8. Для этих целей используйте редактор с синтаксисом (рекомендую notepad++), ссылка на материал об этой программе дана в статье. Все должно получиться, я уверен.
Игорь, у меня файл и так в формате utf-8 без ВОМ… перекодировка самого файла не помогает… все что было в комментариях выше рекомендовано пробовал — ничего не помогло…. не знаю уже,где копать…
Станислав, а у Вас сайт уже на хостинге или еще на Денвере? В этом может быть причина.
C добрым утром!
Извините что беспокою, у меня такая проблема что уже больше не хочеться создавать сайты из-за этой чёртовой проблемы неделя как уже сижу за компом. Все плагины и другие формы обратной связи поставил нет толка, сперва отправился потом затух. После всех работ наткнулся на Ваш сайт и установил эту форму. Так форма классная выводиться на сайт но после заполнения и отправки сообщения у меня вот такая ошибка:
Warning: mail(/home/u560520352/.logs/php_mail.log) [function.mail]: failed to open stream: No such file or directory in /home/u560520352/public_html/wp-content/themes/parasponsive/mail.php on line 12
И потом сообщения вообще не отправляется хотя почта рабочая.
Очень прошу Вас помочь по этой ошибке пожалуйста!
Спасибо!
Strike, еще раз проверьте все внимательно. Дело в том, что данное сообщение информирует об отсутствии файла. Посмотрите, куда Вы поместили mail.php. Проконтролируйте, прописан ли в коде, который нужно разместить в mail.php, на 10 строке именно Ваш адрес электронной почты. По идее, форма универсальная и должна работать на всех темах Вордпресс. Конечно, могут быть исключения, не без этого. В общем, проверьте все досконально и внимательно еще раз.
здравствуйте! подскажите пожалуйста, хочу добавить новые поля в форму. например поле Номер телефона Номер телефона подскажите, куда еще надо добавить переменную $name кроме мест, обозначенных стрелочками http://pix.am/L25U/ . при отправке письма выдает ошибку, что не все поля заполнены. подозреваю, что проблема в 12 строчке. жду ответа, заранее спасибо!
Решение отправил Вам на e-mail, поскольку сообщение получилось довольно объемным.
да, получила. спасибо!
У меня форма отправляла сообщения в виде «????», тогда я поменял кодировку в коде:
. Строку
вообще удалил.
Добрый день) Недавно начал работать с движком поэтому сразу прошу прошение за глупые вопросы.
Хотел сделать обратную связь как в статье но не понял как вывести его в отдельную страницу http://yadi.sk/d/DRE6LHpmMRujn (скрин)
И подскажите как на данной странице отключить обсуждение.
Заранее спасибо
Fenix, мне казалось, я все подробно описал.
сори) невнимательность)
После отправки письма пишет (Ошибка, сообщение не отправлено!) Где подскажите капать?
Fenix, попробуйте ознакомиться с выше стоящими комментариями, там можете найти решение проблемы. Особое внимание уделите сообщениям читателя под ником Велимудр, они обстоятельны и по делу.
Скажите пожалуйста, таким же доступным языком, а как вывести такую форму при клике на ссылку,но в модальном окне?
Добрый день, Игорь
Подскажите форму поставил все по инструкции, вижу в редакторе mail.php
Сохранено в UTF 8 без BOM, но когда отправляю с сайта на свою почту пишет
Ошибка, сообщение не отправлено!
Менял почты и на mail.ru и gmail.com, у Контакт форм (плагина тоже самое)
кстати делал 5 сайтов на wordpress не смог не на одном реализовать эту форму обратной связи, Пользуюсь сторонним сервисом обратной связи но хотелось бы иметь свою. Что вы можете посоветовать ?
Руслан, а если попробовать какой-нибудь альтернативный плагин? Например, Fast Secure Contact Form. Правда, я его не тестировал, но вроде бы он регулярно обновляется, последний раз не далее как в декабре 13 года.
Доброе утро/день.
Вы решите вопрос в чём проблема:
1 — ваша форма отправляет сообщения в виде не читаемых символов/иероглифов.
2 — ваша форма НЕ отправляет сообщения.
В первом варианте проблему решать надо через файл .htaccess:
в файле (если есть, если нет, создать файл НЕ имеющий имени — только точка-расширение), вписать строку:
Для других кодировок соответственную указать.
Во-втором варианте кодировка никакого отношения не имеет.
В вашем случае связи между кодировкой и ошибкой нет.
Решается она просто — у вас проблема в ИМЕНАХ, указанных в качестве якорей в полях формы для скрипта-обработчика, он принимает данные не все, либо принимает не полные, либо не все соответствуют у проверки обязательных/существующих к переменным при отправке либо переменные не соответствуют созданные существующим….. либо отсутствует какая либо переменная — возможно она лишняя.
ПРОВЕРЯЙТЕ ТОЖДЕСТВЕННОСТЬ имён написанных в HTML форме в атрибутах name=»», именам, получаемым методом пост в файле обработчике и их соответствующим переменным.
Признаюсь Я эту ошибку у себя несколько минут правил.
Скиньте исходный код вашей формы и код обработчика.
Если вы ничего не меняли вообще, ошибка может быть только в указании путей иначе обращайтесь к выше написанному пояснению.
Спасибо, Тимур за участие, ты как чувствуешь, что у меня запарка.
спасибо. Надо попробовать.
Игорь, спасибо огромное за статью.
Начал делать блог, с возникающими вопросами разбираюсь по ходу дела, хотя до этого про html и css ничего не знал. Но по мере необходимости гугл в помощь и вперед )))
Ваша форма обратной связи — то что надо! чтобы не перегружать движок лишними плагинами, плюс мануал более чем понятный.
все установил, все кастомизировал, все работает без проблем .
В общем еще раз спасибо!
Пожалуйста, Михаил. 🙂
Здравствуйте! Спасибо за статью. Вот у меня вопрос. А как убрать поле «Тема»? Заранее спасибо.
Доброе утро друг.
Немного дёгтя, как говорят, в бочку мёда…
Форма вообще не работает, кодировка ни windows-1251 ни utf-8 не дают нормальный текст, складывается впечатление, будто очередной релиз ДЕНВЕР-а ещё хуже сделан чем все пред идущие версии.
Связку делать из всего набора самому нет желания, уж слишком тяжёлая эта работа.
Года два-три назад всё на том же денвере работало отлично. У меня статический IP, и настройку денвера на глобальную сеть с использованием базы данных я настраивал (прописывал, корректировал строки конфигов) «вслепую».
Тут уж ничего не поделать, если денвер ВНАТУРЕ дебилом стал (я читал его новый разработчик начал разрабатывать), тогда вообще лучше забыть о нём и либо связку, либо ставить типа Nginx.
Если же кто то знает такую проблему из читавших, и знает решение, пусть напишет )
Честно говоря, я никогда не использовал Денвер, а сразу стал работать вживую. Теперь даже не знаю, что своим читателям посоветовать в этом плане.
прям таки не знаешь?))
Подумай )) отличная тема для новой и очень полезной статьи-продолжения.
Поищи что-то по смыслу «форма обратной связи на Денвер», да попробуй сам разобраться, надо копать в конфиге (расширение .conf), или файл php.ini
Знаешь как удобно на своей машине работать, ОСОБЕННО превосходно, если ip статический, можно создав каталог с именем ip адреса и с подкаталогом WWW засвечивать в интернете сайты и демонстрировать заказчикам работы.
Тимур, к сожалению, в сутках только 24 часа… 🙂
Спасибо за ценную информацию, как раз думала ставить на сайт форму связи с плагином. А здесь такой подарок!!!
Все сделала по инструкции в статье, форма связи работает отлично.
Спасибо огромное!!!
Доброй ночи Игорёк.
Давно не посещал блог твой ))
Благодарю за тему хорошую.
Но у меня всё ни как у людей =)
Ну, это потому, что ты неординарная личность, а без таких жизнь кажется нудной и однообразной. 🙂
Все мы славяне ))
Я тут очередной модуль пытаюсь сломить )))
меня больше всего нервирует то, как разработчики лихо разбрасывают элементы тегов по всем файлам. Я понимаю — свой код, ревность к тому, как другие будут править его код… но послушайте, если вы не хотите этого, тогда зачем вы вообще разработчиками стали? что за идиотизм? это уже НЕ стиль написания кода, это маразм, это паранойя, это мания ёлки-палки.
Я вот собрался писать собственную цмс-ку ))
но не хочу грязь всю ту месить, которой полно во всех известных CMS-ках.
спасибо большое! очень понятно и просто объяснили… все отлично установилось! форма работает на ура. удачи!
разобралась) поспешила с вопросом) спасибо еще раз за статью!
Спасибо за статью! Но помогите, пожалуйста! Мне необходимо создать форму, состоящую из строки с вводом почты отправителя и само сообщение и все, т.е. без строк с именем и темой.
Создала файл contact.php:
а в файл, где должна находиться форма, вставила это:
В итоге сообщения отправляются, даже если не написан емейл (но тут дело вроде как в onBlur, выше прочитала).
Но на почту приходит полная ерунда, содержание письма «Content-type:text/plain; charset = UTF-8″ и от кого. А самого текста сообщения нет.
Помогите пожалуйста, может я неверно сократила код пхп?
p.s. адреса в сообщении указаны условно
Спасибо за статью! Но помогите, пожалуйста! Мне необходимо создать форму, состоящую из строки с вводом почты отправителя и само сообщение и все, т.е. без строк с именем и темой.
Создала файл contact.php:
а в файл, где должна находиться форма, вставила это:
В итоге сообщения отправляются, даже если не написан емейл (но тут дело вроде как в onBlur, выше прочитала).
Но на почту приходит полная ерунда, содержание письма «Content-type:text/plain; charset = UTF-8» и от кого. А самого текста сообщения нет.
Помогите пожалуйста, может я неверно сократила код пхп?
p.s. адреса в сообщении указаны условно
Leto, напишите мне на e-mail то же сообщение, поскольку код не отобразился, либо повторите в комментариях, но вставьте его между
[/php]
Стопроцентной помощи не обещаю, поскольку владею данной темой на среднем уровне.
Спасибо.
Установил на свой сайт в сайдбар. При не коректном заполнении полей или после отправки сообщения выходили крякозябры. Файл был сохранён в utf-8 без бом, сменил кодировку на ANSI. Отображение стало читабельным. Зато письма приходят не совсем правильные — «имя», «тема», «текст» отображаются кракозябрами. Само сообщение читается.
Попробуйте сохранить просто в UTF-8.
Благодарю.
Код работает хорошо.
Добрый день. Подскажите мне пожалуйста. Уже которую форму обратной связи пробую поставить, но проблема в том, что вообще не могу ввести в нее данные. Думаю, это проблема с самим сайтом и его настройками. Подскажите пожалуйста, какие правки мне надо ввести. Заранее всем спасибо.
Оксана, вполне возможно, что Ваша тема ввиду ее некорректно написанного кода не дружит с предложенным мной вариантом, тут ничего не поделаешь. А что-то конкретное подсказать очень сложно, не имея под рукой Ваших шаблонов.
Благодарю! Все с первого раза получилось!
Очень грамотная статья!
Игорь, здравствуйте! Помогите новичку!
Форма в установленной мной на WordPress теме не просто не работает при нажатии на кнопку «отправить», а вобще ничего не происходит! Все сделала по вашему шаблону, но все равно не срабатывает. Я сижу уже пятый день с этой проблемой, но из-за нехватки знаний не могу понять, в чем ошибка?
Вот сама форма:
* We really hate spam. Your email is safe with us, pinky promise.
Вот файл обработчик:
Сейчас все файлы на локальном сервере(Денвер). Насколько мне известно, пока все отправленные письма должны появляться в папке: Z:\tmp\!sendmail. Но все безрезультатно.
Путь к файлу c формой такой: Z:\home\localhost\www\NYP\wp-content\themes\nyp\index.php
Путь к файлу-обработчику такой же: Z:\home\localhost\www\NYP\wp-content\themes\nyp\mail.php
Возможно action не правильно прописан?
Помогите, ПОЖАЛУЙСТА!
Игорь, здравствуйте! Помогите новичку!
Форма в установленной мной на WordPress теме не просто не работает при нажатии на кнопку «отправить», а вобще ничего не происходит! Все сделала по вашему шаблону, но все равно не срабатывает. Я сижу уже пятый день с этой проблемой, но из-за нехватки знаний не могу понять, в чем ошибка?
Вот сама форма:
* We really hate spam. Your email is safe with us, pinky promise.
Вот файл обработчик:
Сейчас все файлы на локальном сервере(Денвер). Насколько мне известно, пока все отправленные письма должны появляться в папке: Z:\tmp\!sendmail. Но все безрезультатно.
Путь к файлу c формой такой: Z:\home\localhost\www\NYP\wp-content\themes\nyp\index.php
Путь к файлу-обработчику такой же: Z:\home\localhost\www\NYP\wp-content\themes\nyp\mail.php
Возможно action не правильно прописан?
Помогите, ПОЖАЛУЙСТА!
Елизавета, а у Вас e-mail правильно прописан? (test@test.ru)
Скажите, как к этой форме добавить прикрепляемый файл ( для того чтобы например отправили коммерческое предложение в ворде иле экселе)
Иван, к сожалению данный вариант формы комментариев не предусматривает возможности прикрепления файлов. Попробуйте воспользоваться плагином Contact Form 7, по-моему он хорошо адаптирован к Вордпресс, хотя я им не пользовался.
Пробовал, но проблема осталась. Ладно, буду смотреть, как оно будет на реальном серваке! Я думаю из-за одного файла, сохраненного не в том формате и не связанного с системными файлами проблем не должно быть. Хотя кто его знает! буду иметь ввиду..
Здравствуйте! У меня такая проблема: абракадабрами сообщает что сообщение доставлено и тп., файл mail.php сохранен в utf-8 без BOM, вставляю на обычную страницу контактов, правда тестирую на локалке. В чем еще может быть проблема?
Странно…решил проблему сохранив в кодировке UTF-8 хотя все файлы сайта в кодировке UTF-8 без BOM…
Да, это действительно необычно. Если проблема решена, значит, все в порядке, хотя какая-нибудь бяка вследствие этого может вылезти в другом месте. Не знаю, что и посоветовать в этом случае. Возможно, причина в локальном сервере. Может, теперь попробовать сохранить без ВОМ?
Евгений, не знаю актуален ли вопрос с абракадаброй, возможно совет пригодится другим .. На своем сервере в хостинг панели в настройках сервера нужно выставить необходимую кодировку. Она вероятно сбилась.. Такое бывает.
Автору поста, спасибо!
Все предыдущую проблему устранил, теперь когда нажимаю отправить, выдает следущее:
Parse error: syntax error, unexpected T_IF in /var/www/cdstree8968/data/www/street-workout.kr.ua/wp-content/themes/ShowTime/mail.php on line 8
Что делать?
Александр, у Вас ошибка в синтаксисе URL: www у Вас отделена слэшем:
www/street-workout.kr.ua/
Правильный синтаксис URL либо такой:
Либо такой:
Думаю, ошибка в этом. Проверьте путь до шаблона темы.
Все сделал как написано!
После нажатия кнопки «Отправить» выскакивает «Ошибка 404″ !
В адресной строке пишет след. адресс «http://street-workout.kr.ua/wp-content/themes/cloudy/mail.php»
Хотя файл mail.php у меня лежит по след. адрессу «http://street-workout.kr.ua/wp-content/themes/ShowTime/mail.php»
Что делать?
Все сделал как написано!
После нажатия кнопки «Отправить» выскакивает «Ошибка 404» !
В адресной строке пишет след. адресс «http://street-workout.kr.ua/wp-content/themes/cloudy/mail.php»
Хотя файл mail.php у меня лежит по след. адрессу «http://street-workout.kr.ua/wp-content/themes/ЫрщцЕшьу/mail.php»
Что делать?
Игорь здравствуйте, хотелось бы исправлений в не доработке вашего простенького кода. Заранее спасибо.
Вы абсолютно правы, Олеся, спасибо за напоминание. Код доработан и исправлен, можете пользоваться.
Спасибо Вам огромное, сейчас проверю.
Здравствуйте! Помогите пожалуйста! Текст как у вас один в один, но все равно если я хоть какое то поле оставила не заполненным или вообще никакое не заполняла, пишет что сообщение отправлено и на почту мне приходит письмо с пустыми полями!
Да, Евгения, здесь есть в коде недоработка, в ближайшее время исправлю.
Хороший блог у Вас, смотрю и наслаждаюсь.
То что искала! Спасибо!
Доброго дня
На базе Вашего шаблона сделал себе форму. Подскажите пожалуйста как сделать вызов url или вернуться автом атом обратно через несклько секунд после отображения сообщения?
Дмитрий, Вы имеете ввиду, автоматический возврат на ресурс после отправки сообщения?
В принципе уже все решил — на других форумах поискал — получилось хорошо
Извините, забыл тег вставить.
1.
В ваш файл имя.php вставьте такой код:
1.
2.
Этот код позволяет вернуться после отправки сообщения на нужную Вам страницу.
Да, в админке прописала новый адрес. Сообщения с помощью формы отправляются прекрасно, но почему то приходят они на старый почтовик, а не тот, что прописан в админке. Вот в чем дело..
Катерина, а у Вас последняя версия WordPress? Если он не обновлен, дело, возможно, в этом.
Спасибо, за подсказку. Все устранила. Форма работает. Решила сделать для сайта новый почтовик на гугле. Сделала. В админке сайта изменила старый адрес на новый. Но сообщения все равно идут на старый ящик. На новый нет. Что такое, не пойму?
Катерина, Вы прописали новый адрес электронной почты в админке Вордпресс в разделе «Параметры»→«Общие»? Далее, немного не понял. Вы говорите, что сообщения идут на старый адрес. Это при использовании формы обратной связи? Но у Вас же блокировался старый e-mail. С другой стороны, утверждаете, что форма работает. Поясните, пожалуйста.
Пост очень толковый, спасибо. Но возникла маленькая проблемка, буду благодарна за помощь. Форма прекрасно установилась, но при попытке отправить сообщение — выдает вот что
Warning: mail() has been disabled for security reasons… и дальше идет ссылка на mail.php
Что посоветуете?
Катерина, это предупреждение о том, что данный e-mail блокируется из соображений безопасности. Видимо, Вы используете какой-то нетрадиционный почтовый сервер. Попробуйте ввести адрес другого почтового ящика (желательно gmail, если у Вас нет, то зарегистрируйтесь и будете иметь доступ ко всем сервисам Google, это очень выгодно).
Давайте я код лучше выложу )
вот сам скрипт отправки
Вячеслав, этот код несколько сложнее, чем тот, что дан в статье. Видите ли, я не гуру языка php, хотя некоторые простые вещи могу объяснить. Вот например, я вижу, что у вас указана кодировка windows-1251 в строке:
$send = mail ($address,$sub,$mes,»Content-type:text/plain; charset = windows-1251\r\nFrom:$from»);
попробуйте заменить ее на UTF-8 и в блокноте notepad++ сохранить весь документ в кодировке UTF-8 без BOM. Хотя дело навряд ли в этом, но попробуйте…
о и забыл, что дописать чтобы после того как высветилось что письмо отправилось, вернулось обратно на сайт
Вячеслав, немного не понял. Вы проверяли работоспособность формы, отправляя сообщение со своего сайта к себе же на e-mail? Даже в этом случае все должно работать, если Вы правильно скопировали код. А Вы заполняли графы Тема и Имя?
Да, проверял, я добавил еще несколько полей нужных мне и все, письмо приходит без темы письма, но все содержимое формы доходит
Вячеслав, а каким образом Вы добавили поля? Может дело в этом?
Здравствуйте все сделал все работает, но письмо приходит без заголовка , просто пустота в списке псием…
Подскажите что куда вставить чтобі в теме письма отображались имя и тема например ?
Проверил. Тестовое сообщение не приходило.
Значит, форма работает корректно. Хорошо, осталось выяснить, почему отображается извещение, что сообщение отправлено.
Да. Сам принцип правильный и при верном вводе всё идет нормально. А вот почему при ошибочном выдается некорректное сообщение — это вопрос 🙂
Проверял синтаксис, вроде бы всё без ошибок.
Игорь, Вы получили страницу через Контакты?)
Да, Zack, простите за задержку. Только сейчас немного освободился. Редко такое бывает, когда все сваливается в одну кучу, в том числе целая кипа писем, которая пришла. Прямо сейчас начинаю заниматься Вашей проблемой.
Zack, что-то я не обнаружил в Вашей форме обратной связи такой проблемы, которую Вы описывали. Отправил тестовое сообщение и не указал e-mail. Получил адекватную реакцию в виде предупреждения, что необходимо заполнить все поля.
Простите, Zack, по моему, я заработался, проверил другую Вашу форму. А по поводу той, о которой Вы писали, действительно, глючит. А скажите мне, пожалуйста, дошло ли действительно мое тестовое сообщение. Если дошло, то что указано там, где должен быть e-mail отправителя, то есть в начале сообщения?
Перепроверил. Скопировано верно.
Просто там получается, что если из одного поля убрать данные, то при нажатии на отправку, надпись возвращается и система всегда пишет, что отправлено.
Т.е. фактически автоматом в пустую ячейку вставляется стандартный текст.
Zack, весьма странно, что у Вас возникли такие сложности. Если код скопирован верно, никаких проблем быть не должно. А у Вас случайно не установлен похожий плагин? Может, Вы забыли его деактивировать? Если нет, то попробуем разобраться. Пришлите мне через страницу Контакты ссылку на Вашу страницу с формой.
Отправил 🙂
Игорь, проблема в том, что если в какое-либо из полей пользователь ничего своего не ввел, а перешел к следующему полю, то в первое поле возвращается значение установленное поумолчанию благодаря вот этому коду:
onblur="if(this.value=='')this.value=this.defaultValue;"
.В результате все поля получаются заполненными и сообщение отправляется.
Я немного поэксперементировал и этот код убрал. Теперь поле остается пустым и выдается сообщение об ошибке заполнения формы.
За код и форму большое спасибо!
Федор, огромное спасибо за конструктивное дополнение, думаю читателям будет интересно. Однако, у меня к Вам большая просьба. Не могли ли Вы повторить предыдущее сообщение, адресованное Дмитрию, по идиотской случайности я его удалил без возможности восстановления. Заранее благодарю.
Код я повторил, но тег code срабатывает некорректно и съедает его. Попробую продублировать через форму обратной связи.
Здравствуйте!
Установил форму, все работает. Только один нюанс: при правильном вводе данных в форму идет правильная обработка, а при неправильных (например, не указал e-mail) все равно пишет, что сообщение отправлено, хотя на самом деле ничего не отправляется.
В чем может быть проблема?
Zack, возможно, Вы неправильно скопировали код, проверьте.
У меня неработает Ваша форма обратной связи. Ошибка 404 не найдена…Все сделал как напмсано, слово в слово.
Значит, не все, раз не работает. Проверьте внимательно, правильно ли Вы скопировали коды.
Согласен с теской, выдает ошибку 404, а сейчас и 502. Может тема нестандарт
Валерий, все может быть. Однако ошибка 404 означает, что страницы с таким URL не существует. Значит, Вы ее либо не опубликовали, либо удалили, третьего не дано. И содержание страницы (в данном случае форма комментариев) здесь совершенно не при чем.
… Либо путь неправильно прописан!
Все скопировано и прописано правильно, единственная думаю проблема что сам сайт в дополнительной папке, хотя прописывал и полный путь не помогло
Надо обновить правила реврайта, товарищи! Либо flush_rewrite_rules(); на один раз подставить, либо тупо зайти в админку и сменить ЧПУ, потом вернуть обратно.
Уважаемый Игорь, спасибо за статью. Поставил форму, но при получении на свой емайл письма в первой половинке адреса получателя, т.е. моего перед «собачкой» (@) непонятная абра-кадабра.
Уважаемый Nurlan! Обычно абракадабра появляется при нарушении кодировки. Попробуйте еще раз скопировать код файла шаблона, который с расширением .php и сохраните его в кодировке UTF-8 (без ВОМ). Обязательно без ВОМ!
Спасибо, давно искал простую и не замороченную в установке форму обратной связи без плагина.
Но у меня не получается настроить что-то. Всё сделал, как Вы подробно написали. Но при отправке сообщения через форму, возникает кусок кода mail.php
Пожалуйста, перейдите по этой ссылке http://english-da.ru/kontakty и попробуйте отправить сообщение через форму, может Вы сможете понять, где я сделал ошибку.
Заранее благодарю 🙂
Давид, отправил сообщение через форму обратной связи. Попробую решить Вашу проблему, но это займет определенное время.
Давид, бог ты мой! Тысяча извинений. Ошибка не Ваша, а моя. Небольшой, но решающий косяк я обнаружил в коде. Видимо, это результат редактирования статей, которое я осуществил недавно. Сейчас все исправил, поэтому сделайте вот что. Откройте созданный для формы обратной связи файл (я не знаю, как он у Вас называется, тот, который у меня mail.php), скопируйте снова первый код в статье и вставьте вместо старого, все должно заработать корректно. Еще раз извините.
Спасибо большое за помощь.
Всё теперь работает корректно. Спасибо ещё раз. 🙂
Не за что, Давид, тем более это моя недоработка. 🙂