www.seomark.ru
Обзоры интересных и полезных программ, фотография, радио, веб-дизайн и т.д. и т.п. и др. и пр.

Веб-дизайн и поисковая оптимизация

Логотип Софт

Создание формы обратной связи

Отправка файлов через форму обратной связи

В предыдущих статьях были рассмотрены различные варианты формы обратной связи и проверка её заполнения посетителем сайта. Довольно часто, кроме простого сообщения от посетителя сайта, требуется переслать автору фотографию, документ, резюме и т.п. Форма обратной связи позволяет легко реализовать отправку любого файла с компьютера пользователя на ваш e-mail. Иногда можно встретить формулировку "Отправка аттача с сайта" от англ. Attach (Прикреплять).

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

Существует множество скриптов отправки файлов с сайта, в том числе и с проверкой отсылаемого содержимого. Найти подходящий не трудно, всё зависит от ваших задач и терпения в поиске по интернету.

В любом случае, начинаем с добавления в созданную нами форму обратной связи (см. статью "Создание формы обратной связи на сайте") строчку кода <input type="file" name="files">, которая как раз и отвечает за формирование строчки с кнопкой Обзор. При нажатии на неё открывается стандартное окно Windows для выбора файла. Кроме того, обязательно надо добавить в начале формы атрибут enctype="multipart/form-data" тега <form>:
<form action="mail.php" method="post" enctype="multipart/form-data">.

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

Ваше имя:

Тема:

Ваш email:

Выбор файла для отправки:

Ваше сообщение:

Как всегда, код этой формы вполне работоспособен и его можно (нужно) посмотреть и скопировать в браузере.

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

Оптимально, на мой взгляд, использовать готовый РНР-скрипт солидной фирмы, например, Worx International Inc. Одна из её разработок - популярный класс для работы с почтовым сервером class.phpmailer.php, который позволяет реализовать множество полезных функций, не занимаясь написанием собственных РНР-скриптов. Скачать эту прелесть можно бесплатно с сайта фирмы-разработчика. Так как сайт англоязычный и у некоторых читателей могут возникнуть трудности с загрузкой, я разместил его здесь. Скачиваете файл (размер 10 Кб), разархивируете и размещаете class.phpmailer.php на своем сайте в той же директории, где и страничка с формой обратной связи. Если вы хотите более подробно познакомиться с данной программой, рекомендую заглянуть на сайт www.php-mail.ru, особенно в гостевую книгу, а также на сайт От новичка до профессионала.

Теперь нам осталось только немного изменить РНР-страничку, отвечающую за отправку почты с вложенным файлом, добавив в неё class.phpmailer.php командой include "class.phpmailer.php"; и несколько строк для обработки пересылаемого файла.

Полный рабочий код страницы mail.php для отправки с сайта сообщений с прикрепленным файлом приведен ниже:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Обратная связь</title>
</head>

<body>
<?php
function send_mail()
{
$name = htmlspecialchars($_REQUEST['name']);
}
{
$email = htmlspecialchars($_REQUEST['email']);
}
$message = '<b>Имя пославшего: </b>'.$_REQUEST['name'].'<br> <b>Электронный адрес: </b>'.$_REQUEST['email'].'<br><b>Сообщение: </b>'.$_REQUEST['mess'];

include "class.phpmailer.php";// подключаем класс

$mail = new PHPMailer();
$mail->From = $_REQUEST['email'];
$mail->FromName = $_REQUEST['name'];
$mail->AddAddress('pupkin@rambler.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 '<center><b>Спасибо за отправку вашего сообщения<br><a href=index.html>Нажмите</a>, чтобы вернуться на главную страницу';
}
if (!empty($_POST['submit'])) send_mail();
?>
</body>
</html>

Перед заливкой файла mail.php на сайт не забудьте поменять pupkin@rambler.ru на свой e-mail.

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

30.01.2010 г.

Задать вопрос автору





Яндекс.Метрика

Copyright © 2008 - Марк Розенталь e-mail: Мой e-mail
Перепечатка материалов сайта разрешается при условии сохранения имени автора и гиперссылки на www.seomark.ru
Ключевые слова: прикрепленный файл, скрипт php, скрипт отправки формы с прикрепленным файлом, создание формы обратной связи