PHP include уязвимость: от теории к практике. Скрипт формы обратной связи
Информация, представленная на этой странице ориентирована в первую очередь для начинающих web-мастеров.
Здравствуйте, друзья, уважаемые посетители моего скромного сайта! Наверняка, многим из Вас, в том числе и начинающим web-мастерам, известно, что такое и для чего нужна ФОС (форма обратной связи).
Традиционная ФОС в самом простом варианте – это когда пользователь заполняет поля формы, расположенной на web-странице, а серверная программа обрабатывает эти данные и пересылает их на почтовый ящик администратора сайта. Но, есть и другие варианты и один из них мы рассмотрим в этом уроке.
Понятно, что при использовании CMS, например бесплатных Joomla и WordPress, вопрос обратной связи можно решить использованием различных расширений или плагинов, но есть альтернативные способы, которые могут быть полезны для любого проекта, построенного как на чистом HTML, PHP, так и использующего движок.
В Сети можно найти довольно много скриптов различных ФОС - и простых и очень навороченных, которые устанавливаются на сайт как полноценная CMS и требуют для своей работы не только поддержку PHP, но и базы данных. Вам придётся, скорее всего, искать, находить и опробовать много вариантов, которые подходят именно Вам.
Обратная связь возможна и через открытую для всех форму комментариев, где происходит общение посетителей с администрацией сайта и между собой, решение вопросов и проблем, а ФОС предполагает более закрытое, уединённое общение двух людей. У посетителей и клиентов всегда возникают вопросы, так сказать, не для всеобщего обозрения и огласки.
Ещё стоит сказать, что есть неплохие сервисы создания форм обратной связи, но сейчас речь пойдёт об одной интересной и нетрадиционной ФОС. Главное её отличие от других образцов в том, что она не нуждается в наличии и использовании почтового клиента. Это web-форма и сообщения в ней создаются, отсылаются на web-странице и получаются на web-странице. Иными словами, данная форма работает в пределах сервера вашего сайта, не используя сервер какой-либо электронной почты .
На бесплатном хостинге с PHP недоступен SMTP-сервер, поэтому создать сервис отправки сообщений со страницы сайта по электронной почте на E-mail администратора, не представляется возможным. Предлагаемый комплект ФОС решает эту проблему и предоставляет как отправителям сообщений со страницы сайта, так и его администратору, удобный способ обмена сообщениями.
Вы имеете возможность проверить форму обратной связи в работе, отправить сообщение, заполнив поля на странице отправки, а также просмотреть его на другой странице с полученными сообщениями.
Капля полезной информацииВ дальнейшем, чтобы не испытывать сложности в перекодировке файлов, прочтите небольшой «ликбез». Для выполнения перекодировки, например, с windows-1251 на utf-8 необходимо:
;
;
В этих действиях важно соблюдать очерёдность выполнения операций, иначе вместо русских слов получите непонятные «кракозябры».
1. Скачайте нужный архив с материалом и распакуйте в текущую папку на компьютере. В папке feedback Вы увидите папку img с изображениями и файлы формы . Папку feedback закачайте целиком на сервер своего сайта.
ВНИМАНИЕ! Если файлы загружены на сервер, то необходимо для файла message.txt установить атрибуты: 666 , иначе чтение и запись в файл будут не возможны и сервер выдаст сообщение об ошибке.
2.
В адресную строку своего браузера введите адрес:
//ваш домен/feedback/feedback.php
Загрузится страница обратной связи с формой для ввода данных. Можно проверить работу формы, заполнив все поля и отправить сообщение. Сделайте в нужном месте ссылку на эту страницу со своего сайта.
3.
Для проверки сообщений следует ввести в адресной строке браузера адрес:
//ваш домен/feedback/message.php
Загрузится страница с заголовком сообщения, с данными и текстом отправленного сообщения. Для удаления всех записей нужно нажать на странице кнопку Удалить все
. Сделайте закладку страницы с сообщениями (message.php), чтобы можно было легко открыть её в следующий раз.
ФОС готова к работе на вашем сайте. Сколько времени ушло у Вас на её установку?
Вариант №2. Установка ФОС в шаблон сайта.Данную форму можно также вставить в шаблон сайта на PHP. Эта задача чуть-чуть сложнее.
Форма будет выглядеть примерно ТАК , а сообщения можно принимать .
Файлы в кодировке utf-8, если ваш сайт в иной кодировке - их нужно перекодировать. Это Вы уже сможете сделать сами.
Страницы feedback.php и send.php имеют для наглядности предварительное оформление, которое в дальнейшем не потребуется ввиду того, что отмеченные необходимые блоки (начало блока → конец блока) в файлах feedback.php и send.php нужно будет скопировать и вставить в шаблоны страниц вашего сайта. Затем эти шаблоны следует переименовать соответственно в feedback.php и send.php . В Главном меню вашего сайта должна присутствовать ссылка на страницу обратной связи feedback.php .
Не потребуются и файлы header.php, footer.php , который служат для формирования страниц feedback.php и send.php при предварительном тестировании.
Файлы message.php и deltext.php являются служебными страницами для администратора сайта. Их можно оставить без изменений, либо оформить по своему вкусу.
Все эти файлы должны находиться в корневом каталоге вместе с файлом message.txt :
Во избежание неприятностей, перед закачкой файлов в корневую папку сайта, проверьте, нет ли совпадений названий файлов! Если есть - файлы стоит переименовать.
Если на хостинге с PHP используется сайт, содержащий обычные HTML-страницы, то в шаблон страницы для обратной связи с именем feedback.html следует вставить форму из файла feedback.php . А в шаблон HTML-страницы с именем send.html вставить блок скрипта из соответствующего файла и переименовать страницу в send.php .
Это всё! Используйте ФОС по максимуму, общайтесь с посетителями, развивайте свой ресурс и всех Вам благ! Не забывайте посещать мой сайт. Ваш Л.М.
Привет, Друзья! Хочу представить вашему вниманию универсальный скрипт отправки данных из форм на email . Скрипт идеально подойдет для сайтов типа Landing Page , сайтов визиток и т.д. Наш скрипт Формы обратной связи выделяется среди массы остальных скриптов в интернете тем, что имеет возможность подключения неограниченного количества форм с разными полями на одной странице и способен отправлять письма нескольким получателям .
Итак. Давайте приступим. Начнем пожалуй с возможностей скрипта.
Скрипт работает на основе библиотеки , поэтому первое что нам необходимо сделать это подключить ее. Для этого рекомендую воспользоваться Google Hosted Libraries.
О остальных файлах давайте подробнее:
feedback.js
- основной файл скрипта, отвечает за AJAX отправку формы
.
jquery.arcticmodal.js,
jquery.arcticmodal.
- обеспечивают возможность вывода форм в модальном окне.
jquery.jgrowl.js,
jquery.jgrowl.css
- позволяют выводить уведомления на странице (блоки в верхнем углу страницы).
Обязательным атрибутом для всех элементов формы является атрибут name="" - необходим для последующей настройки формы.
Для кнопки (type=«button») обязательно нужно указать class=«feedback» . Так же хочу обратить ваше внимание на то, что в качестве кнопки может выступать любой html тег с классом «feedback».Вызов формы в модальном окнеДля вызова формы в модальном окне сперва нужно определить действие по нажатию на какой либо тег, например div с классом modal_btn
Вызов формы в модальном окне $(document).ready(function() { $(document).on("click", ".modal_btn", function(){ $("#small-modal").arcticmodal(); }); });
Так как форма должна быть видна только в модальном окне ее нужно скрыть, поместив в div с атрибутом style=«display: none;», а также для стилизации модального окна обернуть в парочку стандартных дивов.
x
Вот мы и разобрались с основными настройками подключения нашего скрипта отправки форм на E-mail. Давайте теперь заглянем во внутрь и разберемся с настройкой полей, уведомлений да и всего остального, что там есть.
Пример настроек для одной формыНастройки всех форм хранятся в файле feedback\index.php$form["form-1"] = array("fields" => array("name" => array("title" => "Имя", "validate" => array("preg" => "%%", "minlength" => "3", "maxlength" => "35",), "messages" => array("preg" => "Поле [ %1$s ] возможно содержит ошибку", "minlength" => "Минимальная длинна поля [ %1$s ] меньше допустимой - %2$s", "maxlength" => "Максимальная длинна поля [ %1$s ] превышает допустимую - %2$s",)), "tell" => array("title" => "Телефон", "validate" => array("preg" => "/^((8|\+)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{5,10}$/", "minlength" => "5",), "messages" => array("preg" => "Поле [ %1$s ] возможно содержит ошибку", "minlength" => "Минимальная длинна поля [ %1$s ] меньше допустимой - %2$s",)),), "cfg" => array("charset" => "utf-8", "subject" => "Тема письма", "title" => "Заголовок в теле письма", "ajax" => true, "validate" => true, "from_email" => "[email protected]", "from_name" => "noreply", "to_email" => "[email protected], [email protected]", "to_name" => "noreply1, noreply2", "geoip" => true, "referer" => true, "type" => "html", "tpl" => true, "antispam" => "email77", "antispamjs" => "address77", "okay" => "Сообщение отправлено - OK", "fuck" => "Сообщение отправлено - ERROR", "spam" => "Cпам робот", "notify" => "color-modal-textbox", "usepresuf" => false)); // Следующая форма $form["form-2"] = array("fields" => array(.....
Для добавления настроек новой формы, нужно по примеру массива $form["form-1"] создать новый массив $form[""]
Помните я говорил о обязательном атрибуте name=""
?
Так вот пришло время рассказать для чего же он все таки нужен.
name="" - это буквенно-цифровой ключ для массива, должен быть уникальным для массива $form[""]
Пример html кода для наглядности
Теперь давайте разберемся с массивами и для чего они нужны.
$form["form-1"] = array();
$form["form-2"] = array();
и т.д.
Это основные массивы для каждой новой формы, содержат в себе:
- "name" => array();
- Массив настроек элемента формы (например input name=«name» type=«text»
) который имеет ряд настроек.
- "title" => "Ваше имя" - название элемента формы, будет выводится при ошибках или в шаблоне
- "validate" => array();
- массив, содержит правила валидации элемента формы
- "preg" => "%%" - регулярное выражение
- "minlength" => "3" - минимальный размер поля
- "maxlength" => "35" - максимальный размер поля
- "substr" => "35" - всегда обрезать до N символов
- "messages" => array();
- массив, содержит сообщения валидации, а именно:
- "preg" => "Элемент формы не соответствует регулярному выражению"
- "minlength" => "Минимальная длинна поля [ %1$s ] меньше допустимой - %2$s" - ошибка валидации, ключ(preg) не соответствие ключу валидации
- "maxlength" => "Максимальная длинна поля [ %1$s ] превышает допустимую - %2$s" - ошибка валидации, ключ(preg) не соответствие ключу валидации
- "charset" => "utf-8" - кодировка
- "subject" => "Тема письма", - Тема письма
- "title" => "Заголовок в теле письма", - Заголовок в теле письма
- "ajax" => true, - это аякс форма TODO (если не нужно, поставить - false)
- "validate" => true, - (true) если хотим валидацию формы на сервере, заменяет js валидацию при "ajax" => true. Когда выкл(false) то можно не задавать настройки validate полей. TODO
- "from_email" => "myemail", - отправитель, указать имя поля(name=«myemail»), а если не нужно email от пользователя, тогда заглушку [email protected]
- "from_name" => "myname", - отправитель, указать имя поля(name=«myname»), а если не нужно имени пользователя, тогда заглушку No-reply
- "to_email" => "[email protected]", - email получателя. Для отправки на несколько адресов перечислить их через запятую. Пример ("to_email" => "[email protected], [email protected], [email protected]",)
- "to_name" => "noreply1", - Имя получателя. При отправке на несколько адресов через запятую перечислить имена получателей. Пример ("to_name" => "noreply1, noreply2, noreply3",)
- "geoip" => true, - узнать местоположение по типу TODO
- "referer" => false, - добавлять URL страницы с которой была отправлена форма
- "type" => "plain", - тип письма - plain, html (если используются html теги)
- "tpl" => false, - использовать шаблон письма. Если true, то будет подключен файл шаблона, в соответствии с именем формы (name=«form-1»), из папки и обработан файл (feedback/tpl/form-1.tpl), в противном случае будет отправлено все как есть, каждое поле с новой строки
- "antispam" => "email77", - Анти спам, метод основан на скрытом (display:none) поле, которое автоматом заполняет только робот, тем самым выдает себя.
- "antispamjs" => "address77", - Анти спам, метод основан на скрытом (display:none) поле, изначально заполненное, которое автоматически очищает javascript при загрузке страницы, даже умный робот не может это предвидеть, и тогда он блокируется.
- "okay" => "Сообщение пользователю", - Сообщение пользователю, выводится при условии успешно отправленной формы, можно использовать html теги.
- "fuck" => "Сообщение пользователю", - Сообщение пользователю, выводится при возникновении ошибки отправки формы, можно использовать html теги.
- "spam" => "Сообщение пользователю", - Сообщение пользователю, выводится при подозрении на спам робот, можно использовать html теги.
- "notify" => "color-modal", - какой тип уведомлений показывать, textbox - блоки в верхнем углу страницы, color - цветная подсветка в форме, modal - модальное окно в центре страницы, none - отключить. Можно совмещать, пример: color-modal - ошибки заполнения подсветкой полей, а текстовый статус отправки в модальном окне TODO
- "usepresuf" => false - Используется ли кастомное добавление к теме либо к заголовку письма, на случай не большого изменения можно указать например %%cfg.title.suffix%%, для этого в форме должно быть скрытое поле, подробнее, см. ф-цю presuf()
Во-первых, для того, что-бы форма была отправлена в шаблоне, в настройках формы нужно включить использование файла шаблона - "tpl" => true ,
Во-вторых, нужно создать файл шаблона с расширением *.tpl в папке (feedback/tpl/ ), в соответствии с именем формы (name=«form-1» ).
Пример: (feedback/tpl/form-1.tpl
)
Заголовок в теле письма | |
%%name.title%% | %%name.value%% |
%%tell.title%% | %%tell.value%% |
name
, tell
и т.д. - Это атрибуты (name="") полей которые заполняет пользователь.
title
- Название элемента формы, которое задается в массиве настроек элементов формы.
value
- Значение элемента формы.
На сегодня пока все, но скрипт конечно же не идеален, так что комментарии и описания багов приветствуются и в следующих версиях будут исправлены.
P.S. Скрипт разработан командой
При запуске нового веб-проекта, нет ничего приятнее, чем сразу получить положительные отзывы и благодарность от первых посетителей. К сожалению, владельцы многих веб-сайтов опускают из виду этот факт, и на их сайте достаточно сложно связаться с администрацией.
Сегодня мы расскажем вам о простеньком решении проблемы. Данная форма, используя jQuery, PHP и PHPMailer позволит получать отзывы от посетителей прямо на ваш электронный ящик.
HTML
Давайте начнем с разметки HTML. Таблица стилей включена в начале документа, а исходники javascript находятся в его конце. Это повышает скорость производительности, так как скрипты загружаются последними, в то время, как остальной веб-сайт уже загружен и отображен.
: feedback.html
Quick Feedback Form w/ PHP and jQuery | Tutorialzine Demo
В теле документа мы видим DIV «#feedback». Он фиксированным позиционированием приурочен к правому нижнему углу окошка, что вы сможете увидеть в следующем разделе статьи.
Внутри него находятся 5 цветных пролётов (span). Их ширина составляет по 20% от документа, и они выровнены по левой стороне. Таким образом, они заполонят всю ширину DIV’а #feedback.
И наконец, в контейнере.section, который содержит заголовок и шапку, находится кнопка и поле ввода текста.
CSS
Переходя к редактированию стилей формы, нам нужно сначала сказать кое-что о том, как структурирована таблица стилей. Как вы видите из определений CSS, расположенных ниже, каждое правило начинается с #feedback. Таким образом, мы достигаем CSS-эквивалент namespaces, что облегчает добавление кода в существующий сайт и помогает избежать возможных конфликтов.
: styles.css – Часть 1
#feedback{
background-color:#9db09f;
width:310px;
height:330px;
position:fixed;
bottom:0;
right:120px;
margin-bottom:-270px;
z-index:10000;
}
#feedback .section{
background:url("img/bg.png") repeat-x top left;
border:1px solid #808f81;
border-bottom:none;
padding:10px 25px 25px;
}
#feedback .color{
float:left;
height:4px;
width:20%;
overflow:hidden;
}
#feedback .color-1{ background-color:#d3b112;}
#feedback .color-2{ background-color:#12b6d3;}
#feedback .color-3{ background-color:#8fd317;}
#feedback .color-4{ background-color:#ca57df;}
#feedback .color-5{ background-color:#8ecbe7;}
#feedback h6{
background:url("img/feedback.png") no-repeat;
height:38px;
margin:5px 0 12px;
text-indent:-99999px;
cursor:pointer;
}
#feedback textarea{
background-color:#fff;
border:none;
color:#666666;
font:13px "Lucida Sans",Arial,sans-serif;
height:100px;
padding:10px;
width:236px;
Moz-box-shadow:4px 4px 0 #8a9b8c;
-webkit-box-shadow:4px 4px 0 #8a9b8c;
box-shadow:4px 4px 0 #8a9b8c;
}
Первый элемент, который нам нужно отформатировать – это DIV #feedback. Ему задан фиксированное позиционирование, и он приурочен к окну браузера. Далее идет определение DIV’а.section и пяти цветных пролётов. Эти пролеты (span) отличаются лишь цветом фона, заданным разными классами.
В самом конце у нас идут CSS-правила, которые определяют внешний вид поля ввода текста.
: styles.css – Часть 2
#feedback a.submit{
background:url("img/submit.png") no-repeat;
border:none;
display:block;
height:34px;
margin:20px auto 0;
text-decoration:none;
text-indent:-99999px;
width:91px;
}
#feedback a.submit:hover{
background-position:left bottom;
}
#feedback a.submit.working{
background-position:top right !important;
cursor:default;
}
#feedback .message{
font-family:Corbel,Arial,sans-serif;
color:#5a665b;
text-shadow:1px 1px 0 #b3c2b5;
margin-bottom:20px;
}
#feedback .arrow{
background:url("img/arrows.png") no-repeat;
float:right;
width:23px;
height:18px;
position:relative;
top:10px;
}
#feedback .arrow.down{ background-position:left top;}
#feedback h6:hover .down{ background-position:left bottom;}
#feedback .arrow.up{ background-position:right top;}
#feedback h6:hover .up{ background-position:right bottom;}
#feedback .response{
font-size:21px;
margin-top:70px;
text-align:center;
text-shadow:2px 2px 0 #889889;
color:#FCFCFC;
}
Во второй части таблицы стилей вы можете видеть определение кнопки подтверждения (отправки). Учтите, что у кнопки есть три положения, которые привязаны к одному и тому же фоновому изображению – submit.png, и оно отображено только когда это нужно. Положения: стандартное положение, положение при наведении курсора мыши, а также активное положение «работающее». Когда кнопка находится в рабочем положении, эффект при наведении курсора мыши отключен.
jQuery
У формы обратной связи есть два положения: скрытая и раскрытая. Когда она загружена, по стандарту ее положение установлено на скрытом. Но когда пользователь кликает по заголовку, она раскрывается посредством jQuery. Это реализовано посредством мониторинга событий и запуска простейшей анимации, как вы можете наглядно посмотреть это ниже.
: script.js – Часть 1
$(document).ready(function(){
// The relative URL of the submit.php script.
// You will probably have to change it.
var submitURL = "submit.php";
// Caching the feedback object:
var feedback = $("#feedback");
$("#feedback h6").click(function(){
// We are storing the values of the animated
// properties in a separate object:
Var el = $(this).find(".arrow");
If(el.hasClass("down")){
anim = {
mb: -270,
pt: 10
};
}
// The first animation moves the form up or down, and the second one
// moves the "Feedback" heading, so it fits in the minimized version
Feedback.stop().animate({marginBottom: anim.mb});
Feedback.find(".section").stop().animate({paddingTop:anim.pt},function(){
el.toggleClass("down up");
});
});
Для того, чтобы наш код оставался опрятным, мы передвинули положения if в верх документа, и создали объект anim, который удерживает значения, отвечающие за анимацию. В зависимости от того, есть ли класс «down» на стрелке, мы скрываем или раскрываем форму.
Вторая часть script.js содержит в себе структуру взаимодействия AJAX с submit.php.
: script.js – Часть 2
$("#feedback a.submit").live("click",function(){
var button = $(this);
var textarea = feedback.find("textarea");
// We use the working class not only for styling the submit button,
// but also as kind of a "lock" to prevent multiple submissions.
If(button.hasClass("working") || textarea.val().length return false;
}
// Locking the form and changing the button style:
button.addClass("working");
$.ajax({
url: submitURL,
type: "post",
data: { message: textarea.val()},
complete: function(xhr){
Var text = xhr.responseText;
// This will help users troubleshoot their form:
if(xhr.status == 404){
text = "Your path to submit.php is incorrect.";
}
// Hiding the button and the textarea, after which
// we are showing the received response from submit.php
Button.fadeOut();
Textarea.fadeOut(function(){
var span = $("",{
className: "response",
html: text
})
.hide()
.appendTo(feedback.find(".section"))
.show();
}).val("");
}
});
Return false;
});
});
Здесь мы используем AJAX-метод нижнего уровня jQuery - $.ajax(), посредством которого реализовано взаимодействие с submit.php. Данный метод даёт нам немного больше контроля над соединением, нежели $.get() или $.post().
Одно большое преимущество данного метода заключается в «полноценном» обратном сообщении. Здесь мы определяем соответствие ответа и ошибки 404, которая вежливо сообщает пользователю о том, что следует проверить путь к submitURL.
Теперь давайте продолжим и перейдем к финальной части обучающей статьи – секции PHP
PHP
PHP содержит в себе информацию, пропущенную через AJAX, обрабатывает ее, и отсылает сообщение на ваш электронный ящик.
: submit.php
// Enter your email address below
$emailAddress = "[email protected]";
// Using session to prevent flooding:
session_name("quickFeedback");
session_start();
// If the last form submit was less than 10 seconds ago,
// or the user has already sent 10 messages in the last hour
if($_SESSION["lastSubmit"] && (time() - $_SESSION["lastSubmit"] 10)){
die("Please wait for a few minutes before sending again.");
}
$_SESSION["lastSubmit"] = time();
$_SESSION["submitsLastHour"]++;
require "phpmailer/class.phpmailer.php";
if(ini_get("magic_quotes_gpc")){
// If magic quotes are enabled, strip them
$_POST["message"] = stripslashes($_POST["message"]);
}
if(mb_strlen($_POST["message"],"utf-8") die("Your feedback body is too short.");
}
$msg = nl2br(strip_tags($_POST["message"]));
// Using the PHPMailer class
$mail = new PHPMailer();
$mail->IsMail();
// Adding the receiving email address
$mail->AddAddress($emailAddress);
$mail->Subject = "New Quick Feedback Form Submission";
$mail->MsgHTML($msg);
$mail->AddReplyTo("noreply@".$_SERVER["HTTP_HOST"], "Quick Feedback Form");
$mail->SetFrom("noreply@".$_SERVER["HTTP_HOST"], "Quick Feedback Form");
echo "Thank you!";
Для начала мы воспользуемся управлением сессиями PHP для того, чтобы вычислить, сколько раз пользователь использовал форму за прошедший час. Если пользователь пытается отправить сообщение менее чем через 10 секунд с момента отправки последнего сообщения или отправляет более 10 сообщений в течение часа, то ему будет отображена ошибка.
Сообщения посылаются при помощи класса PHPMailer. Он работает только с PHP5, поэтому нужно, чтобы на сервере была поддержка именно этой версии.
Число методов PHPMailer’а используется для конфигурации выходящих писем. Посредством IsMail() мы сообщаем классу, что следует использовать внутреннюю PHP-функцию mail(). AddAddress() добавляет получаталей (вы можете добавить туда более одного получателя). После добавления объекта в тело документа, мы указываем адрес ответа, и отправляем сообщение.
На этом мы заканчиваем разработку!
В завершение
Вы можете использовать данную форму для сбора отзывов от посетителей. Данной формой вы значительно облегчаете пользователям процесс написания отзывов, а многие пользователи просто не станут писать отзыв, если для этого надо еще куда-то щелкать и куда-то переходить. Вы также без труда можете оформить форму по собственному усмотрению или по шаблону веб-сайта.
Не секрет, что очень часто приходится как-то общаться с посетителями своего сайта. Разумеется, можно просто дать свой e-mail (как сделал я), а можно предложить и другой способ - это форма обратной связи . Разумеется, здесь потребуется знание PHP . Но чтобы Вам не надо было писать всё с нуля, я предоставляю Вам очень даже хороший скрипт формы обратной связи .
После скачивания извлекайте архив на Ваш сайт (смотрите, ничего не сотрите у себя). Теперь давайте его настроим. Для этого открываем файл "config.php ". И меняем значения следующих переменных:
Теперь Вы можете запустить файл index.php у скрипта. В результате, перед Вами возникнет форма. Можете её заполнить и отправить письмо.
Теперь встаёт вопрос: "Как вставить эту форму обратной связи на свой сайт? ". Чтобы это сделать, найдите файл, который отвечает у Вас за страницу обратной связи (пусть это будет "feedback.html "). Сразу измените расширение на php (то есть на "feedback.php "). Скопируйте код из index.php скрипта в файл со страницей обратной связи (feedback.php ). Теперь Вы можете делать всё, что пожелаете нужным между тегами и , только не стирайте то, что Вы вставили из index.php . То что между тегов тоже не трогайте, если точно не знаете, что делаете.
И, наконец, если Вам не нравится внешний вид формы, то Вы можете его подкорректировать в файле "styling.css ".
Если у Вас остались какие-либо вопросы, либо происходят какие-то глюки со скриптом (я его не тестировал), то пишите мне на e-mail , чтобы я исправил.
Чтобы не зависеть от работы чужих скриптов, научитесь их создавать самостоятельно. Этому Вас научит мой Видеокурс "PHP и MySQL с Нуля до Гуру ":