Как запрограммировать форму обратной связи
![]() |
Грех – не использовать чужой код, а грех в нём не разбираться(с). Следуя этой истине, иногда полезно взять уже готовое решение, проверенное временем. Естественно, если вы с нуля напишите форум, это будет огромный плюс в плане практики, но пока вы это сделаете уйдёт не мало времени. Да и не факт, что вы сумеете его довести до функциональности бесплатных альтернатив. Поэтому, когда я взялся написать скрипт для формы обратной связи, то решил поискать что-нибудь готовое. Оказывается, есть очень популярный класс для работы с почтовым сервером class.phpmailer.php |
Скачать его можно отсюда: http://phpmailer.codeworxtech.com.
В нём очень много полезных функций.
Сначала я просмотрел переменные, которые использует этот класс, и отметил для себя нужные.
var $Subject для темы письма
var $Body хранит сообщение письма.
var $From тут указываем e-mail от кого присылается письмо.
var $FromName а здесь имя отправителя.
Потом выбрал необходимые функции.
function AddAddress() здесь указываем ваш адрес, на который будут приходить письма и ваше имя.
function IsHTML() нужна, чтобы выставить формат письма.
function AddAttachment() если вы хотите разрешить прикреплять файлы к письму.
function send() ну и естественно письмо надо отправить, эта функция как раз для этого
Выбрав себе нужные функции, я решил написать скрипт для обработки формы обратной связи.
form.html
<div align="center">
<br>Имя<br>
<input type="text" name="name" size="40">
<br>тема<br>
<input type="text" name="title" size="40">
<br>Контактный email<br>
<input type="text" name="email" size="40">
<br>Файл<br>
<input name="files" type="file" size="28">
<br>Сообщение<br>
<textarea rows="10" name="mess" cols="30"></textarea>
<br><br><input type="submit" value="send" name="submit">
</div>
</form>
index.php
include "form.html";
function send_mail() {
$name = htmlspecialchars($_REQUEST['name']);
$email = htmlspecialchars($_REQUEST['email']);
// проверка на наличие имени
if (empty($name)) {
echo "не введено имя";
} else {
// проверка правильности e-mail
if(!preg_match("/^[0-9a-z_\.\-]+@[0-9a-z_\.\-]+\.[a-z]{2,6}$/i", $email)) {
echo "неправильно введён e-mail";
} else {
$message = '<b>Hello from</b>'.$_REQUEST['name'].'<br /> <b>мой email </b>'.$_REQUEST['email'].'<br /> '.$_REQUEST['mess'];
// подключаем класс
include "class.phpmailer.php";
$mail = new PHPMailer();
$mail->From = $_REQUEST['email'];
$mail->FromName = $_REQUEST['name'];
$mail->AddAddress('megaadmin@yandex.ru','админу');
$mail->IsHTML(true);
$mail->Subject = $_POST['title'];
if(isset($_FILES['files'])) {
if($_FILES['files']['error'] == 0) {
$mail->AddAttachment($_FILES['files']['tmp_name'],$_FILES['files']['name']);
}
}
$mail->Body = $message;
if (!$mail->Send()) die ('Mailer Error: '.$mail->ErrorInfo);
echo 'письмо отправлено.';
}
}
}
if (!empty($_POST['submit'])) send_mail();
?>
Надеюсь, он кому-нибудь пригодится
Кстати, для вас это будет хорошим примером, чтобы использовать уже полученные знания.






Декабрь 18th, 2008
что-то я всё сделал как написано, но на моём сайте не работает эта форма. подскажи неучу, как правильно интегрировать эту форму в мой сайт. помоги, очень надо!!!
у меня на хосте поддерживается РНР.
Заранее спасибо!
Декабрь 18th, 2008
Значит что-то сделано не как написано. Я же не знаю что у тебя за сайт. Ошибки хотя бы скинь
Декабрь 29th, 2008
Добрый день!
А как я смогу увидеть, то что мне отправят с помощью form.html? Как работает данная форма?
Спасибо!
Декабрь 30th, 2008
2 Leonid: Не совсем понял вопрос “как я смогу увидеть, что мне отправят с помощью form.html”. То что отправят через нее придет Вам на почту
Так она и работает..
Апрель 21st, 2009
Warning: include() [function.include]: Failed opening ‘class.phpmailer.php’ for inclusion (include_path=’.:/usr/local/lib/php’) in /home/users/d/degavyman/domains/sanseb.ru/sendmail.php on line 25
Fatal error: Class ‘PHPMailer’ not found in /home/users/d/degavyman/domains/sanseb.ru/sendmail.php on line 27
Подскажие пожалуйста что это за ошибка
Апрель 21st, 2009
Не может подключить файл class.phpmailer.ru, т.к. не находит его.
Апрель 21st, 2009
Спасибо!
Как мне создать файл class.phpmailer.ru?
Я может быть неправильно выражаюсь но я далек от PHP а форма нужна.Подскажите что нужно сделать?
Апрель 21st, 2009
Михаил, Вам нужно скачать PHPMailer отсюда: [ссылка]
Июль 10th, 2009
поставил, настроил, но на мыло в полях “от кого”, “тема”, “кому” – вместо русских букв пришли закорючки – где искать причину проблемы?
Июль 10th, 2009
Если закорючки – это значит неправильная кодировка (или при отображени письма выбрана неправильная кодировка, или при формировании письма)
Июль 10th, 2009
уже разобрался, хост на UTF-8 оказался
Июль 19th, 2009
А какую тут кодировку нужно поставить?? Скрипт у меня работает. Но вместо нормально текста приходит что то типа п п п п яяяяя – вот такое вот. Побовала меня на разные кодировки все равно также. Подскажите что поменять нужно и где? Меня кодировку в index.php.
Июль 19th, 2009
Оксана, если отображается не то, что должно отображаться, это значит, что кодировка самого php-файла не такая, какую Вы записываете в него. Т.е. кодировка у него, к примеру, cp1251, а Вы пытаетесь внутри него преобразовать текст в другую кодировку с помощью iconv или еще как-то. Может быть кодировка базы у Вас не такая, какую Вы ожидаете (если Вы берете данные из базы).
Июль 20th, 2009
Ну я сделала все так, как написано у вас. Перекопировала код на страничку. И отдельно создала Index.php(Открыла Notepad, ввела код, который написан у вас. и Сохранила как php.). А также скачала вот этот файл class.phpmailer. А что я могу поменять, даже не знаю. Какой файл я могу вообще поредактировать?? Заранее спасибо.
Июль 30th, 2009
ну так кто нибудь поможет мне сделать так, чтоб сообщения приходили на рууском?? а то ничего не получается. с
Июль 30th, 2009
Оксана, присылайте свои наработки по этому поводу мне на admin@i-novice.net – я посмотрю, в чем проблема.
Октябрь 3rd, 2009
Здравствуйте! Я вам уже писала как-то. У меня просьба. Хочу изменить немного форму. У вас там есть строчки, имя, почта, тема и сам текст сообщения. А я хочу сделать например такие строчки: Имя, Фамилия, Почта, Телефон, ну или любую другую строчку, чтобы могли вписать туда данные. Текст сообщения убрать. Не подскажете как это сделать? Я пробовала сделать строчку фамилию, но там нет проверки, как в строчке Имя, ввели ли туда данные или нет. Буду рада если поможете сделать мне, а то в этом не разбираюсь.