• Как заработать на сайте
  • Как заработать в интернете
  • Инвестиции в интернете
  • Партнерские программы
  • Рейтинг парт. программ
  • SEO продвижение
  • Вопросы и ответы
  • Термины оптимизатора
  • HTML-уроки
  • Интернет
  • Мои услуги
  • Реклама на сайте
  • Обратная связь
‘тоимость баннера за месяц: 30$ (подробности)
Главная → HTML уроки и советы → Как сделать форму обратной связи на php с каптчей

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

Форма обратной связи — нужная вещь для любого сайта. С помощью неё пользователь может отправить сообщение администратору ресурса, т.е. иметь какой-то контакт с сайтом. Вот как примерно выглядит форма:

Главным html тегом на котором основывается работа обратной связи является — тег <form>.


Простой вариант реализации формы обратной связи

Давайте рассмотрим для начала простейшую форму для отправки писем.

HTML-код самой простой формы обратной связи

<form method="post" action=""> Имя: <input type="text" class="text" name="user_name" size="50"/> Е-mail: <input name="user_email" type="text" class="style" size="50"/> Тема: <input type="text" class="text" name="mess_subj" size="50"/> Сообщение: <textarea name="mess" class="textarea" rows="8" cols="45"></textarea> <input type="submit" value="Отправить сообщение"/> </form>

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

Код обработчика нужно вставить где-то в начале страницы или хотя бы перед формой:

<?php $flag_error = false; if (isset($_POST['user_name'])) {$user_name = $_POST['user_name'];} if (isset($_POST['user_email'])) {$user_email = $_POST['user_email'];} if (isset($_POST['mess_subj'])) {$mess_subj = $_POST['mess_subj'];} if (isset($_POST['mess'])) {$mess = $_POST['mess'];} if (empty($user_name)) { echo "Не указано имя!"; $flag_error = true; } if (empty($user_email)) { echo "Не указан e-mail!"; $flag_error = true; } if (empty($mess_subj)) { echo "Тема письма не написано!"; $flag_error = true; } if (empty($mess)) { echo "Сообщение не написано!"; $flag_error = true; } $to = "электронная почта кому отправлять"; $headers = "Content-type: text/plain; charset = windows-1251"; $subject = "Сообщение".$mess_subj; $message = "Имя пославшего: $user_name \nЭлектронный адрес: $user_email \nСообщение: $mess"; if ($flag_error == false && mail($to, $subject, $message, $headers) ) { echo "Сообщение отправлено"; } else { echo "Сообщение не удалось отправить!"; } ?>

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

$to = "petrov_ivan@yandex.ru";

К этой конструкции было бы не плохо прописать и стиль. Например такой:

.text, .textarea{ font: normal 12pt verdana; border: 1px solid #808080; color: #6C3DD3; border-radius: 5px; -moz-border-radius: 4px; -webkit-border-radius: 4px; }

Минусом этой формы безусловно является отсутствие каптчи. Без каптчи приходит множество спам писем. Также отсутствует анализ сообщения на html-код, специальные символы, что является не безопасным для сервера.

Давайте рассмотрим более "умный" вариант формы обратной связи.


Реализация формы обратной связи с каптчей и проверкой символов

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

1. Скачайте архив: feedback.rar, в котором будут файлы:

  • captcha.php и captcha.class.php — модули для обработки капчи
  • validator.php — модуль для проверки полей на ошибки и специальные символы
  • feedback.html — файл с примером формы для отправки
  • form.css — файл со стилями
  • Десять изображений — для генерации капчи

2. Залейте все файлы к себе на хостинг. Рекомендую десять изображений залить в папку /images. Остальные файлы либо в корень, либо создайте отдельную директорию, где обрабатываются php функции.



3. Рассматривать подробно содержимое файлов валидации и капчи заняло бы очень много времени. Уверен, что Вы и сами при желании сможете разобраться. Давайте рассмотрим основной код в feedback.html:

<?php session_start(); require_once 'validator.php'; $validator = new Validator(); $validator->set_error_delimiters('<div class="error">', '</div>'); //Задаем правила валидации $rules = array( array( 'field' => 'user_name', 'label' => 'Ваше имя', 'rules' => array( 'trim' => '', //Обрезаем пробелы по бокам 'strip_tags' => '', // Удаляем HTML и PHP теги 'required' => 'Поле %s обязательно для заполнения' ) ), array( 'field' => 'user_email', 'label' => 'Ваш e-mail адрес', 'rules' => array( 'trim' => '', 'required' => 'Поле %s обязательно для заполнения', 'valid_email' => 'Поле %s должно содержать правильный email-адрес' ) ), array( 'field' => 'subject', 'label' => 'Тема письма', 'rules' => array( 'trim' => '', //Обрезаем пробелы по бокам 'strip_tags' => '', // Удаляем HTML и PHP теги 'required' => 'Поле %s обязательно для заполнения' ) ), array( 'field' => 'text', 'label' => 'Текст сообщения', 'rules' => array( 'trim' => '', //Обрезаем пробелы по бокам 'strip_tags' => '', // Удаляем HTML и PHP теги 'required' => 'Поле %s обязательно для заполнения' ) ), array( 'field' => 'keystring', 'label' => 'Капча', 'rules' => array( 'trim' => '', //Обрезаем пробелы по бокам 'required' => 'Вы не ввели цифры изображенные на картинке', 'valid_captcha[keystring]' => 'Вы ввели не правильный цифры с картинки' ) ) ); //Устанавливаем правила валидации $validator->set_rules($rules); $message = ''; //Запускаем валидацию POST данных if($validator->run()){ //Здесь впишите свой e-mail адрес //на негу будут приходить уведомления с формы $to = 'VASHA_POCHTA@yandex.ru'; $from = "=?WINDOWS-1251?b?" . base64_encode($validator->postdata('user_name')) . "?="; $subject = "=?WINDOWS-1251?b?" . base64_encode( $validator->postdata('subject') ) . "?="; $mail_body = "Поступил новый ответ от формы обратной связи (VASH_SITE)\r\n\n"; //Формируем текст сообщения foreach($rules as $rule){ if($rule['field'] == 'keystring') continue; $mail_body .= $rule['label'].': '.$validator->postdata($rule['field'])."\r\n"; } $header = "MIME-Version: 1.0\n"; $header .= "Content-Type: text/plain; charset=windows-1251\n"; $header .= "From: ". $from . " <" . $validator->postdata('user_email'). ">"; //Отправка сообщения if(mail($to, $subject, $mail_body, $header)){ $message = '<div class="noerror">Ваше сообщение успешно отправлено!</div>'; //Очищаем форму обратной связи $validator->reset_postdata(); } else{ $message = '<div class="error">Ваше сообщение не отправлено!</div>'; } } else{ //Получаем сообщения об ошибках в виде строки $message = $validator->get_string_errors(); //Получаем сообщения об ошибках в виде массива $errors = $validator->get_array_errors(); } ?> <?=(!empty($message))? '<div class="errors">'.$message.'</div>': ''?> <form action="" method="post" class="form"> <div <?=(!empty($errors['user_name']))? 'class="error_field"': '';?>> <label>Ваше имя:</label> <input type="text" class = "text" name="user_name" value="<?=$validator->postdata('user_name');?>" /> </div> <div <?=(!empty($errors['user_email']))? 'class="error_field"': '';?>> <label>Ваш e-mail:</label> <input type="text" class = "text" name="user_email" value="<?=$validator->postdata('user_email');?>" /> </div> <div <?=(!empty($errors['subject']))? 'class="error_field"': '';?>> <label>Тема письма:</label> <input type="text" class = "text" name="subject" value="<?=$validator->postdata('subject');?>"/> </div> <div class="area<?=(!empty($errors['text']))? ' error_field': '';?>"> <label>Текст сообщения:</label> <textarea cols="40" class = "textarea" rows="5" name="text"><?=$validator->postdata('text');?></textarea> </div> <div <?=(!empty($errors['keystring']))? 'class="error_field"': '';?>> <label class="captcha">Капча:</label> <div class="capth_images"><?php require 'captcha.php';?></div> <label class="captcha">Введите цифры:</label> <input type="text" class = "text" name="keystring" value=""/> </div> <div> <label> </label> <input type="submit" class="btn" value="Отправить сообщение" /> </div> </form>

Работу этой формы можно посмотреть на странице контакты. Главные особенности работы этого скрипта:

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

2. В случае если поле заполнено некорректно или не заполнено вообще, будет выведено сообщение об ошибке

Неправильно введен E-mail:

Неправильно введена капча:

3. Этот код можно интегрировать в любой движок. Либо на статичный сайт.



Читайте также:
• Как добавить счетчики посещений на сайт
• Как сделать выпадающие меню
• Как сделать меню для сайта на PHP
• Как сделать сайт на PHP
• Как добавить RSS ленту на сайт
• Как скрыть ссылку от поисковиков

← Перейти в каталог html уроков и советов

Основные разделы
  • Главная
  • Партнерские программы
  • Рейтинг партнерских программ
  • Статьи про SEO
  • Термины SEO
  • Описание бирж
  • HTML-уроки и советы
  • CSS-уроки
  • Биткоины
  • PHP-уроки
  • Бинарные опционы
  • Социальные сети
  • Обзоры систем
  • Все про CMS
  • Реклама в интернете
Важно
  • Продвижение сайта
  • Аудит внутренней оптимизации
  • Куплю Ваш сайт
  • Куплю Вашу подпись на форуме
  • Подписаться на рассылку
  • Реклама на сайте
  • Карта сайта
  • Обратная связь
© 2010-2025 - Zarabotat-Na-Sajte.ru