sonyps4.ru

PHP include уязвимость: от теории к практике. Скрипт формы обратной связи

Информация, представленная на этой странице ориентирована в первую очередь для начинающих web-мастеров.

Здравствуйте, друзья, уважаемые посетители моего скромного сайта! Наверняка, многим из Вас, в том числе и начинающим web-мастерам, известно, что такое и для чего нужна ФОС (форма обратной связи).

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

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

В Сети можно найти довольно много скриптов различных ФОС - и простых и очень навороченных, которые устанавливаются на сайт как полноценная CMS и требуют для своей работы не только поддержку PHP, но и базы данных. Вам придётся, скорее всего, искать, находить и опробовать много вариантов, которые подходят именно Вам.

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

Ещё стоит сказать, что есть неплохие сервисы создания форм обратной связи, но сейчас речь пойдёт об одной интересной и нетрадиционной ФОС. Главное её отличие от других образцов в том, что она не нуждается в наличии и использовании почтового клиента. Это web-форма и сообщения в ней создаются, отсылаются на web-странице и получаются на web-странице. Иными словами, данная форма работает в пределах сервера вашего сайта, не используя сервер какой-либо электронной почты .

На бесплатном хостинге с PHP недоступен SMTP-сервер, поэтому создать сервис отправки сообщений со страницы сайта по электронной почте на E-mail администратора, не представляется возможным. Предлагаемый комплект ФОС решает эту проблему и предоставляет как отправителям сообщений со страницы сайта, так и его администратору, удобный способ обмена сообщениями.

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

Капля полезной информации

В дальнейшем, чтобы не испытывать сложности в перекодировке файлов, прочтите небольшой «ликбез». Для выполнения перекодировки, например, с windows-1251 на utf-8 необходимо:

  • Открыть все файлы в текстовом редакторе, лучше всего в Notepad++;
  • Удалить записи о старой кодировке, например,
    ;
  • Перекодировать поочерёдно все файлы (Кодировки → преобразовать в utf-8 без BOM);
  • Вставить записи о новой кодировке, например,
    ;
  • Сохранить изменения во всех файлах (файл → сохранить все).
  • В этих действиях важно соблюдать очерёдность выполнения операций, иначе вместо русских слов получите непонятные «кракозябры».

    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 , сайтов визиток и т.д. Наш скрипт Формы обратной связи выделяется среди массы остальных скриптов в интернете тем, что имеет возможность подключения неограниченного количества форм с разными полями на одной странице и способен отправлять письма нескольким получателям .

    Итак. Давайте приступим. Начнем пожалуй с возможностей скрипта.

  • Подключение неограниченного количества форм на одной странице.
  • Проверка правильности заполнения полей.
  • Настройка уведомлений.
  • Возможность использования писем для каждой формы.
  • Тип письма - (если используются html теги)
  • Отправка на неограниченное количество адресов.
  • Индивидуальная настройка каждой формы.
  • Скрипт работает на , без перезагрузки страницы.
  • Защита от спам ботов.
  • Первоначальная настройка.
    Скрипт работает на основе библиотеки , поэтому первое что нам необходимо сделать это подключить ее. Для этого рекомендую воспользоваться Google Hosted Libraries.

    О остальных файлах давайте подробнее:

    feedback.js - основной файл скрипта, отвечает за AJAX отправку формы .
    jquery.arcticmodal.js,
    jquery.arcticmodal. - обеспечивают возможность вывода форм в модальном окне.
    jquery.jgrowl.js,
    jquery.jgrowl.css - позволяют выводить уведомления на странице (блоки в верхнем углу страницы).

    HTML и обязательные атрибуты.
    Обязательным атрибутом для всех элементов формы является атрибут 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="" - необходим для последующей настройки формы.
    Так вот пришло время рассказать для чего же он все таки нужен.
    name="" - это буквенно-цифровой ключ для массива, должен быть уникальным для массива $form[""]

    Пример html кода для наглядности

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

    $form["form-1"] = array();
    $form["form-2"] = array(); и т.д.
    Это основные массивы для каждой новой формы, содержат в себе:

  • "fields" => 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) не соответствие ключу валидации
  • "cfg" => array(); - Массив настроек формы.
    • "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 ". И меняем значения следующих переменных:

  • "mailto " - поставьте вместо "[email protected] " адрес своего почтового ящика.
  • "charset " - поставьте кодировку, хотя если Ваш сайт русскоязычный, то можете оставить "windows-1251 ".
  • "content " - советую оставить "text/plain ", так как вряд ли Ваши посетители будут отправлять Вам сообщения в HTML-формате .
  • Теперь Вы можете запустить файл index.php у скрипта. В результате, перед Вами возникнет форма. Можете её заполнить и отправить письмо.

    Теперь встаёт вопрос: "Как вставить эту форму обратной связи на свой сайт? ". Чтобы это сделать, найдите файл, который отвечает у Вас за страницу обратной связи (пусть это будет "feedback.html "). Сразу измените расширение на php (то есть на "feedback.php "). Скопируйте код из index.php скрипта в файл со страницей обратной связи (feedback.php ). Теперь Вы можете делать всё, что пожелаете нужным между тегами и , только не стирайте то, что Вы вставили из index.php . То что между тегов тоже не трогайте, если точно не знаете, что делаете.

    И, наконец, если Вам не нравится внешний вид формы, то Вы можете его подкорректировать в файле "styling.css ".

    Если у Вас остались какие-либо вопросы, либо происходят какие-то глюки со скриптом (я его не тестировал), то пишите мне на e-mail , чтобы я исправил.

    Чтобы не зависеть от работы чужих скриптов, научитесь их создавать самостоятельно. Этому Вас научит мой Видеокурс "PHP и MySQL с Нуля до Гуру ":



    Загрузка...