Делаем форму обратной связи wordpress: плагин contact form 7, функции в темах и самописный код

Делаем форму обратной связи wordpress: плагин contact form 7, функции в темах и самописный код

Делаем форму обратной связи wordpress: плагин contact form 7, функции в темах и самописный код
СОДЕРЖАНИЕ
0
02 ноября 2019

Сделать поля горизонтально в строчку

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

Поле Имя, Почта и Телефон хочу выстроить в строчку. Не забываем сохранять изменения.

Оборачиваем в div

Заходим в админке WordPress Внешний вид > Редактор тем > style.css прописываем стили для обратной связи WordPress в конец файла.

Прописываем стили

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

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

Область для ввода сообщения

Конечно же многим из вас может понадобится поле для ввода сообщения. Для того, чтобы получить его мы воспользуемся тегом ‘textarea’. Добавьте следующую разметку в форму:

<div class="contact-form__input-wrapper">
 <textarea name="text" class="contact-form__input contact-form__text" placeholder="Введите ваше сообщение"></textarea>
 <div class="contact-form__error contact-form__error_text"></div>
</div>

Стили я уже добавил в ‘style.css’, так что теперь наша форма выглядит так:

Теперь необходимо передать данные в файл валидации ‘valid.php’ и проверить все ли в порядке. Как уже говорил выше, у нас простейший случай с проверкой не пустое ли поле. Прежде чем перейти к реализации валидации давайте предположим, что поле для ввода текста обязательно для заполнения.

Для этого перейдем в файл ‘config.php’ и укажем ‘true’ в константе, отвечающей за это текстовое поле.

	// Текстовое поле
	const TEXTISREQUIRED = true;
	const MSGSTEXTERROR = "Поле обязательно для заполнения";

Теперь наше текстовое поле стало обязательно для заполнения. В файле ‘valid.php’, по аналогии с другими полями напишем такую проверку:

if (isset($_POST) ) {
        if(empty($_POST) && TEXTISREQUIRED) {
            $msgs = MSGSTEXTERROR;
        } else {
            if (!empty($_POST)) {
                $text = "<b>Сообщение: </b> " . trim(strip_tags($_POST)) . "<br>";
            }
        }
    }

Обратите внимание на ‘text’ в проверке POST запроса. Этот то самое значение, которое указывали в параметре ‘name’ у тега ‘textarea’

<textarea name="text" class="contact-form__input contact-form__text" placeholder="Введите ваше сообщение"></textarea>

В файле ‘mail.js’ сохраним ‘div’ в который будем выводить ошибку, если валидатор ее вернет для текстового поля:

// Сохраняем в переменные дивы, в которые будем выводить текст ошибки
let inpNameError = $(this).find('.contact-form__error_name');
let inpEmailError = $(this).find('.contact-form__error_email');
let inpTelError = $(this).find('.contact-form__error_tel');
let inpTextError = $(this).find('.contact-form__error_text');

А затем, ниже, напишем проверку:

if (respond.text) {
 inpTextError.text(respond.text);
} else {
 inpTelError.text('');
}

По аналогии вы можете добавлять любые другие поля. Но прежде нужно передать нашу переменную ‘$text’ в тело письма. Делается это в файле ‘mail.php’ в 34 строке, той самой, о которой я уже упоминал выше.

$mail->Body = "$name $tel $email $text";

Теперь, если все сделали правильно, в письме будут приходить данные и из этого поля.

Настройка PHP кода

Теперь переходим к обработчику формы, где все действия начинаются с зависимости от выбранного селектора — Бот/Человек.

Что здесь есть?

  • — после заполнения формы ботом, отправляет на страничку с уведомлением и через 5 секунд возвращает на указанную в поле.
  • — настройка соответствия html полей. Здесь вам необходимо указать все соответствующие имена в форме обратной связи. Таким образом, в поле вам необходимо указать точно такой же порядок опций, что и в html разметке.
  • — это тело сообщения, которое будет приходить в письме. Вы можете поменять их местами, изменить названия или просто удалить/закомментировать не нужные.
  • — обязательная строка, указывающая кодировку письма. Если вы случайно сотрете или измените , то все ваши слова превратятся в иероглифы.
  • — после успешного нажатия на кнопку, посетитель будет отправлен на страничку уведомления и через 5 секунд произойдет перенаправление на указанную страничку. Или же он получит увдомление об ошибке.

Здесь все. Едем дальше.

Шаг 3.

Разметка и миниатюрный сценарий готовы. Дело осталось за малым – за стилями.

Создадим файл CSS, например styles.css и присоединим его к нашему html-документу, добавив между тегами

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

XHTML

<link rel=»stylesheet» rev=»stylesheet» type=»text/css» href=»styles.css» />

1 <link rel=»stylesheet»rev=»stylesheet»type=»text/css»href=»styles.css»  />

Первым делом добавим стиль блоку-контейнеру.

CSS

#container {
margin: 0 auto;
border: 3px solid #EEEEEE;
width: 800px;
-webkit-birder-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px; }

1
2
3
4
5
6
7

#container {

marginauto;

border3pxsolid#EEEEEE;

width800px;

-webkit-birder-radius6px;

-moz-border-radius6px;

border-radius6px;}

При помощи определений width: 800px; и margin: 0 auto; мы задаем блоку-контейнеру ширину 800 пикселей и располагаем его по центру html-документа. При помощи остальных определений задаем границу блока-контейнера – её тип, ширину цвет, а при помощи определений CSS3 -webkit-birder-radius,-moz-border-radius и border-radius делаем углы границ закругленными

Границу контейнера делаем светлой и невыразительной, чтобы она не отвлекала внимание от более важных элементов

Теперь, создадим определения для текстовых полей:

CSS

input, textarea {
border: solid 1px #CCCCCC;
margin-left: 10px;
padding: 4px;
outline: 0;
font: Verdana, Geneva, sans-serif;
width: 200px;
background: #F9F9F9;
-webkit-birder-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
}

1
2
3
4
5
6
7
8
9
10
11
12

input, textarea {

bordersolid1px#CCCCCC;

margin-left10px;

padding4px;

outline;

fontVerdana,Geneva,sans-serif;

width200px;

background#F9F9F9;

-webkit-birder-radius4px;

-moz-border-radius4px;

border-radius4px;

}

При помощи margin-left задаем отступ от края блока-контейнера в 10 пикселей. Определение padding служит для создания пространства между текстом в текстовом поле и границей текстового поля. Кроме этого, ка видите, мы задаем цвет, стиль границы (опять закругленные углы) и ширину текстовых полей. Вот что у нас получается:

Что ж, неплохо, хотя не мешало бы как-то выделить поле для сообщения и кнопку отправки.

CSS

textarea {
width: 400px;
height: 150px;
line-height: 150%;
}
.send input {
width: auto;
margin-bottom: 10px;
border: 2px solid #E0E0F3;
font: Verdana, Geneva, sans-serif;
background-color: #E5E5F8;
}

1
2
3
4
5
6
7
8
9
10
11
12

textarea {

width400px;

height150px;

line-height150%;

}

.send input {

widthauto;

margin-bottom10px;

border2pxsolid#E0E0F3;

fontVerdana,Geneva,sans-serif;

background-color#E5E5F8;

}

В принципе, ничего нового. Мы просто задаем новые размеры для текстовой области, включая высоту строчки line-height. Для кнопки делаем нижний отступ до границы контейнера при помощи margin-bottom. Вот что получается:

Это уже похоже на что-то. Далее, добавляем стили меткам label, а также делаем небольшой отступ поля Имя автора от верхней границы контейнера.

CSS

p label {
margin-left: 10px;
font-style: italic;
color: #c0c0c0;
}

.name input {
margin-top: 10px;
}

1
2
3
4
5
6
7
8
9

p label {

margin-left10px;

font-styleitalic;

color#c0c0c0;

}
 

.name input {

margin-top10px;

}

Как можно видеть, метки стали светлее и теперь они меньше выделяются, но их все равно видно:

В принципе, выглядит уже довольно неплохо, однако, можно добавить еще немного визуальной интерактивности при помощи CSS:

CSS

input:hover, textarea:hover, input:focus, textarea:focus {
border-color: #A0A0A0;
}

.send input:hover {
border: 2px solid #C0C0E3;
}

1
2
3
4
5
6
7

input:hover, textarea:hover, input:focus, textarea:focus {

border-color#A0A0A0;

}
 

.send input:hover {

border2pxsolid#C0C0E3;

}

При наведении курсора на элемент, его границы становятся немного темнее и четче:

Вот, в принципе и все, урок по созданию простой HTML-формы подходит к концу. Мы с вами с нуля спроектировали и написали простую интерактивную веб-форму в светлых тонах, которая в будущем станет основой первой гостевой книги, написанной, например, на PHP+MySQL.

С уважением Павел Карабило

Редакция: Рог Виктор и Андрей Бернацкий. Команда webformyself.

Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Узнать подробнее

Краткая справка

ООО «Форма Связи» зарегистрирована 13 сентября 2013 г. регистратором Межрайонная инспекция Федеральной налоговой службы № 14 по Тюменской области. Руководитель организации: директор Пронин Алексей Анатольевич. Юридический адрес ООО «Форма Связи» — 625025, Тюменская область, город Тюмень, Волгоградская улица, дом 67, квартира 12.

Основным видом деятельности является «Торговля оптовая прочей офисной техникой и оборудованием», зарегистрированы 2 дополнительных вида деятельности. Организации ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ «ФОРМА СВЯЗИ» присвоены ИНН 7203299276, ОГРН 1137232052858, ОКПО 27390756.

Последние изменения

06.07.2020

Добавлены сведения о дополнительном виде деятельности: Деятельность по предоставлению инженерно-технических консультаций в сфере энергосбережения и повышения энергетической эффективности использования энергетических ресурсов (71.12.8)

03.05.2020

Завершено исполнительное производство
№ 49618/19/72032-ИП от 27.06.2019

Завершено исполнительное производство
№ 36168/19/72032-ИП от 23.05.2019

11.02.2020

Завершено исполнительное производство
№ 111081/19/72032-ИП от 13.12.2019

13.12.2019

Новое исполнительное производство
№ 111081/19/72032-ИП от 13.12.2019, сумма требований: 500 руб.

09.08.2019

Организация исключена из Реестра малого и среднего предпринимательства

27.06.2019

Новое исполнительное производство
№ 49618/19/72032-ИП от 27.06.2019, сумма требований: 200 руб.

23.05.2019

Новое исполнительное производство
№ 36168/19/72032-ИП от 23.05.2019, сумма требований: 1 000 руб.

Шаг 2.

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

1
2
3
4
5

<input type=»text»name=»name»value=»Имя автора»onblur=»if(this.value.length == 0) this.value = ‘Имя автора'»onfocus=»if(this.value == ‘Имя автора’) this.value = » «/>

…..

<input type=»text»name=»email»value=»[email protected]»onblur=»if(this.value.length == 0) this.value = ‘[email protected]'»onfocus=»if(this.value == ‘[email protected]’) this.value = » » />

…..

<textarea name=»msg»onblur=»if(this.value.length == 0) this.value = ‘Текст сообщения'»onfocus=»if(this.value == ‘Текст сообщения’) this.value=»»>Текст сообщения</textarea>

Как видите, мы просто описываем обработку событий onblur и onfocus. Событие onfocus срабатывает, когда мы выделяем элемент формы, событие onblur срабатывает, когда мы выделяем что-либо другое, и элемент возвращается в первоначальное состояние. В общем, кусок кода выглядит так:

JavaScript

onfocus=»if(this.value == ‘какой-то текст’) this.value = » » (если при выделении элемента в нем каходится «какой-то текст», то сделать так, чтобы в нем ничего не находилсь, то есть » «)
onblur=»if(this.value.length == 0) this.value = ‘какой-то текст'» (если при удалении фокуса с элемента в нем находится 0 символов, поместить в этот элемент ‘какой-то текст’)

1
2

onfocus=»if(this.value == ‘какой-то текст’) this.value = » «(еслипривыделенииэлементавнемкаходится«какой-тотекст»,тосделатьтак,чтобывнемничегоненаходилсь,тоесть»»)

onblur=»if(this.value.length==)this.value=’какой-то текст'»(еслиприудалениифокусасэлементавнемнаходитсясимволов,поместитьвэтотэлемент’какой-то текст’)

Вот как это выглядит на практике:

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

Подключение необходимых библиотек и скриптов

Отправка сообщений происходит на AJAX без перезагрузки страницы, поэтому в первую очередь нам необходимо подключить библиотеку jQuery. Большинство современных тем и шаблонов уже используют библиотеку jQuery и подключать ее повторно не требуется. В противном случае она подключается в functions.php следующим образом:

Есть еще один способ подключить jQuery на WordPress с помощью файла functions.php:

В первом случае будет загружена библиотека, идущая в составе WordPress. Преимущество второго способа заключается в том, что загрузка происходит с CDN Google и таким образом можно подключить любую версию.

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

В 6 строке Вам необходимо изменить путь к файлу-обработчику mail.php.

Подключать скрипт допустимо как на одной странице с формой, так и для всего сайта в заголовке или подвале, указав свой путь к файлу:

Основная работа завершена и наша форма на данном этапе уже полностью работоспособна, остался последний штрих — придать ей форму.

Основные требования к форме обратной связи.

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

— Фамилия, Имя, Отчество;

— контактный адрес электронной почты и телефон;

— Данные об организации клиента;

— Структурное подразделение и должность клиента;

— Иногда бывает и возраст клиента;

— Тематика сообщения.

Это далеко не весь список вводимых данных. Под каждый конкретный сайт владелец создает собственный вид формы обратной связи.

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

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

Не стоит, например, заставлять вводить информацию со статистическим уклоном, или расспрашивать о качествах, предоставляемых Вашим блогом товаров или услуг. Вот здесь должен действовать принцип: «Чем меньше ввода информации, тем лучше его обслуживание».

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

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

Так же стоит упомянуть понятие «оперативности ответа». Особенно для коммерческих форм, слишком долгое время отклика на вопрос клиента, точно приведет к его потере.

Теперь давайте поговорим о том как технически организовать форму обратной связи на сайте.

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

К сожалению, на WordPress в основном дистрибутиве этого нет.

Решается вопрос довольно просто, я предложу вам два способа.

Первый способ настроить форму обратной связи, это использовать инструмент от Гугла

Для этого идем в свой аккаунт Google и выбираем вкладку “»Диск”.

Кликаем по кнопке создать и в открывшемся окне выбираем форму.

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

Чем эти формы от Гугла хороши:

1.Создать сможет даже начинающий все очень просто и по шагам

2. Работают быстро и довольно надежно

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

4. Формы абсолютно бесплатные

Из минусов можно назвать только один – обратная ссылка на Гугл-документы.

Теперь рассмотрим второй способ создания обратной связи на блоге.

Для WordPress разработаны много плагинов, но я использую на всех своих проектах Contact Form 7

Плагин устанавливаем через форму поиска где вбиваем Contact Form 7

Установка довольно стандартная, если есть сложности — вот мануал  Установка плагинов WordPress. Все способы установки

После установки идем в левой колонке у нас появилась новая кнопка.

Жмем на нее и в новом окне у нас отрывается мастер создания формы обратной связи.

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

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

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

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

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

Дополнительные плюшки на js и jQuery

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

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

Как работает эта строка?

Все завязано на количестве символов в указанном поле, т.е. ее длине .

  • — указывает на то, что поле не должно быть пустым. Читается как — «если в поле число символов не равно нулю, то…»
  • — объединяет условия (и)
  • — кол-во символов должно быть больше или равно 6. Почему шесть? Я указал это число потому, что минимальный почтовый адрес состоит из 6 символов. Проверим? @bk.ru — 6 символов.
  • — больше или равно десяти символам. Почему 10, а не 11 ? При заполнении этого поля, посетитель может указать свой телефон как с +7, так и через 8. Поэтому лучше указывать 10.

На этом все. Подключайте форму, тестируйте и пользуйтесь.

Клиентская часть

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

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

А мы пойдем более продвинутым методом и сделаем отправку данных не перезагружая страницу, и получая ответ от сервера будем выдавать пользователю сообщение об успешной операции, либо ошибке. Однако, нам также понадобятся 2 файла, допустим contact.php и custom.js.

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

$(".form").submit(function() {
var str = $(this).serialize();
$.ajax({
   type: "POST",
   url: "contact.php",
   data: str,
   success: function(msg) {
   if(msg == 'ok') {
      alert('Письмо отправлено');
   }
   else {
     alert('Ошибка! Возможно вы неправильно заполнили поля.');
   }
}
});
return false;
});
if (trim($_POST) == '') {
echo 'false';
}
else {
$txtname = trim($_POST);
$txtemail = trim($_POST);
$txtphone = trim($_POST);

// от кого
$fromMail = '';
// Сюда введите Ваш email
$emailTo = '';

$subject = 'Обратная связь';
$subject = "=?utf-8?b?". base64_encode($subject) ."?=";
$headers = "From: Пример формы<$fromMail>\n";
$headers .= 'Content-type: text/plain; charset="utf-8"\r\n';
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Date: ". date('D, d M Y h:i:s O') ."\r\n";
// тело письма
$body = "Получено письмо с сайта ".$site." \n\nИмя: ".$txtname."\nТелефон: ".$txtphone."\ne-mail: ".$txtemail."\nСообщение: ".$txtmessage;
mail($emailTo, $subject, $body, $headers );
echo 'ok';
}

Это самый элементарный пример работы контактной формы. Есть множество вариантов, как доработать файл проверки на php, создание своих классов и т.д. Но наша задача была создать простой и рабочий пример, который можно использовать на своем сайте.

demo

файлы

Основные настройки формы

<?
	// *** Настройка обязательности полей, в случае если они присутствуют в вашей форме

	// Имя
	const NAMEISREQUIRED = true;
	const MSGSNAMEERROR = "Поле обязательно для заполнения";

	// Телефон
	const TELISREQUIRED = false;
	const MSGSTELERROR = "Поле обязательно для заполнения";

	// Email
	const EMAILISREQUIRED = false;
	const MSGSEMAILERROR = "Поле обязательно для заполнения";
	const MSGSEMAILINCORRECT = "Некорректный почтовый адрес";

	// Текстовое поле
	const TEXTISREQUIRED = false;
	const MSGSTEXTERROR = "Поле обязательно для заполнения";

	// Файл
	const FILEISREQUIRED = false;
	const MSGSFILEERROR = "Поле обязательно для заполнения";

	// Соглашение
	const AGGREMENTISREQUIRED = false;
	const MSGSAGGREMENTERROR = "Поле обязательно для заполнения"; 

	// Сообщение об успешной отправке
	const MSGSSUCCESS = "Сообщение успешно отправлено";

	// *** SMTP *** //

		require_once($_SERVER . '/mail/phpmailer/smtp.php');
		const HOST = 'ssl://smtp.yandex.ru';
		const LOGIN = '[email protected]';
		const PASS = 'senderPass';
		const PORT = '465';

	// *** /SMTP *** //

        // Почта с которой будет приходить письмо
	const SENDER = '[email protected]';
	
	// Почта на которую будет приходить письмо
	const CATCHER = '[email protected]';
	
	// Тема письма
	const SUBJECT = 'Заявка с сайта';
	
	// Кодировка
  const CHARSET = 'UTF-8';

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

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

const NAMEISREQUIRED = true;
const MSGSNAMEERROR = "Поле обязательно для заполнения";
  • ‘const NAMEISREQUIRED = true;’ — означает, что поле обязательно для заполнения. Если в вашем случае его можно не заполнять, то поставьте ‘false’.
  • ‘const MSGSNAMEERROR = «Поле обязательно для заполнения»;’ — это сообщение, которое будет выводится пол полем, в случае если заполнение его обязательно, но по каким-то причинам пользователь этого не сделал.

То есть если имя обязательно, но не было заполнено, появиться сообщение ‘Поле обязательно для заполнения’. Вот так:

Далее идет константа с сообщением, которое увидит пользователь при успешной отправке, давайте, пока, реализуем такой функционал, а потом с перебросом на страницу благодарности.

 // Сообщение об успешной отправке
 const MSGSSUCCESS = "Сообщение успешно отправлено";

Можете вывести любое сообщение, которое подходит в вашем случае.

Теперь самое главное. Если прошлые вещи можно было оставить по умолчанию, то теперь нужно настроить отправку на почту. Так как в скрипте используется SMTP протокол передачи почты, то нужно узнать несколько параметров у вашего почтового сервиса. Это:

  • Адрес сервера — ( константа HOST )
  • Логин (адрес электронной почты) — ( константа LOGIN )
  • Пароль — ( константа PASS )
  • Порт — ( константа PORT )

пароль и логин у каждого свои, а ‘HOST’ и ‘PORT’ для популярных почтовых сервисов я приведу в списке.

Сервис HOST PORT
Яндекс ssl://smtp.yandex.ru 465
Gmail smtp.gmail.com 465
Mail.ru ssl://smtp.mail.ru 465

Будьте внимательны с этими параметрами, так как тут легко сделать ошибку и ничего приходить не будет.

С остальным все проще, объяснять по сути и нечего:

// Почта с которой будет приходить письмо
const SENDER = '[email protected]';
	
// Почта на которую будет приходить письмо
const CATCHER = '[email protected]';
	
// Тема письма
const SUBJECT = 'Заявка с сайта';
	
// Кодировка
const CHARSET = 'UTF-8';

Войти на Мою страницу Вконтакте без пароля – подробный способ

Для начала войдите на главную страницу социальной сети:

Вход на Мою страницу Вконтакте (откроется в новом окне браузера).

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

Подробная информация о странице

«Моя страница» — это твой своеобразный центр управления, а для гостей, кто зайдет на нее — источник информации о тебе.

Что можно увидеть на ней? Если смотреть слева направо, то сначала идет меню, через которое ты можешь попасть в другие разделы. Затем — информация о тебе; в левой колонке — твоя фотография (или аватар, ава), список друзей, кто сейчас в онлайне, ссылки на твои фотоальбомы и прочее. В правой колонке показывает информацию о тебе: имя, дата рождения, родной город, семейное положение, контактная информация, места учебы и работы.

Обычно, чтобы просмотреть всю информацию, надо нажать на ссылку «Показать полную информацию». Ниже находится так называемая «стена», на которой можно что-нибудь написать — можно и самому, можно и другим людям (если ты им разрешил — все это можно настроить).

Чтобы изменить или добавить информацию, пользуйся ссылками «Ред.» или «Редактировать» (слева вверху), не забудьте потом нажать «Сохранить»

И обрати внимание, что когда ты заходишь в редактирование, вверху есть закладки «Основное», «Контакты», «Интересы» — нажимая на них, Вы попадете в редактирование других разделов своей страницы

Быстрый вход Вконтакт на свою страницу

В первый раз нужно войти на сайт кнопкой «Войти». Потом вход ВКонтакт будет таким, как на картинке ниже, если нажать на свое имя, откроется именно твоя страница, где вся информация о тебе, где можно писать статусы, загружать фото и тому подобное. Нажимая на слово «Сообщения», ты откроешь свои переписки. При нажатии в любом другом месте (например, на синем заголовке), сайт откроется как обычно, на ленте новостей:

Самое удобное — это поставить стартовой страницей. Сайт будет всегда под рукой. Там есть не только вход на все основные сайты, но и поиск в интернете, и другие полезные функции. Например, ты можешь смотреть, кто из друзей в онлайне, не заходя в сеть и оставаясь невидимкой. Кроме того, ты видишь все последние события у себя: кто ответил, кто поставил сердечко, кто написал на стене и тому подобное.

Как скрыть мою страницу Вконтакте от незнакомых людей?

Вполне понятное желание — закрыть свою страницу ВКонтакте от других людей, например, от всех кроме друзей. Или разрешить просматривать на ней только некоторую информацию. Все это можно сделать в меню «Мои Настройки», а затем вверху выбери закладку «Приватность». Ты увидишь много настроек, можете менять то, что Вам нужно; например, напротив «Кто видит основную информацию моей страницы» выбери «Только друзья» — тогда никто, кроме тех, кого Вы добавили в друзья, не увидит информацию, которую указали на своей странице. Главное сохранить все настройки которые были изменены.

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

Маска ввода номера телефона

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

Для маски ввода номера телефона нам понадобиться сторонний скрипт. Я предлагаю взять ‘jQuery Mask Plugin’ из статьи, ссылку на которую дал выше.

Подключаем после jQuery. Я делаю это так:

<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- jQuery Mask Plugin -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script>

<script src="/mail/js/mail.js"></script>

Теперь необходимо инициализировать скрипт.

<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<!-- jQuery Mask Plugin -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js"></script

<script src="/mail/js/mail.js"></script>
<script>
 $(function() {
  $('.contact-form__input_tel').mask('+3(000)000-00-00');
 });
</script>

После этого маска успешно появилась в поле телефона:

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

Совсем подробно расписывать не буду, просто покажу что и куда добавляю, а в конце дам ссылку на исходник. Если какое-то из полей вам не понадобится, то просто не используйте его в разметке, а в файле ‘config’ — установите значение ‘false’ там, где задаем обязательность заполнения.

Валидация формы перед отправкой

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

Все вам понадобится дополнительная валидация, все это реализовано в файле ‘valid.php’.

<?php
$msgs = [];
	if (isset($_POST) ) {
        if(empty($_POST) && NAMEISREQUIRED) {
            $msgs = MSGSNAMEERROR;
        } else {
            if (!empty($_POST)) {
                $name = "<b>Имя: </b>" . trim(strip_tags($_POST)) . "<br>";
            }
            
        }
    }

    if (isset($_POST) ) {
        if(empty($_POST) && TELISREQUIRED) {
            $msgs = MSGSTELERROR;
        } else {
            if (!empty($_POST)) {
                $tel = "<b>Телефон: </b> " . trim(strip_tags($_POST)) . "<br>";
            }
        }
    }

    if (isset($_POST) ) {
        if(empty($_POST) && EMAILISREQUIRED) {
            $msgs = MSGSEMAILERROR;
        } else {
            if(!empty($_POST)) {
                if (filter_var($_POST, FILTER_VALIDATE_EMAIL)) {
                    $email = "<b>Почта: </b> " . trim(strip_tags($_POST)) . "<br>";
                } else {
                    $msgs = MSGSEMAILINCORRECT;
                }
            }
        } 
    }
    
    if((empty($_POST) && empty($_POST)) && (!EMAILISREQUIRED && !TELISREQUIRED)) {
        $msgs = 'Заполните хотя бы одно контактное поле для связи с вами';
    }

    if ($msgs) {
      echo json_encode($msgs);
      die;
    } else {
      $msgs = MSGSSUCCESS;
    }
if((empty($_POST) && empty($_POST)) && (!EMAILISREQUIRED && !TELISREQUIRED)) {
 $msgs = 'Заполните хотя бы одно контактное поле для связи с вами';
}

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

CSS

Когда форма готова, можно ее немного преобразить. Тут все также зависит от ваших потребностей и фантазий. Я же, для наглядности набросал немного стилей для каждого элемента, чтобы не выглядело все столь плоским. Но если вам лень или не знаете как это делается, то можете использовать мой вариант:

form{
max-width: 400px;
width: 100%;
margin: 0 auto;
}
input{
box-sizing: border-box;
display: block;
border: none;
box-shadow: inset 0px 0px 4px 1px rgba(0, 0, 0, 0.11);
padding: 10px 20px;
width: 100%;
margin: 10px 0;
outline: none;
}
input{
background: red;
border: none;
box-shadow: 0px 2px 0 1px #C50909;
border-radius: 5px;
color: white;
text-transform: uppercase;
font-weight: 600;
width: 200px;
cursor: pointer;
transition: 0.3s;
}
input:hover{
background: black;
box-shadow: 0px 2px 0 1px black;
}
Комментировать
0
Комментариев нет, будьте первым кто его оставит

;) :| :x :twisted: :sad: :roll: :oops: :o :mrgreen: :idea: :evil: :cry: :cool: :arrow: :P :D :???: :?: :-) :!: 8O

Это интересно

Бензиновые пилы «байкал» Без рубрики
0 комментариев

Карьерные самосвалы белаз 7540 Без рубрики
0 комментариев