Главная
О проекте
ИТ-профессии
Сертификация
Удаленная работа
 

PHP-скрипт для отправки сообщений с сайта

Автор: Admin  


При создании сайта многие сталкиваются с необходимостью вставки формы обратной связи при помощи которой осуществляется отправка сообщений с сайта.

Процесс создания формы с любыми полями достаточно прост для людей обладающих навыками html. Для этого даже не нужно иметь профессию HTML-верстальщик. Однако в этом случае отправка сообщений с сайта будет производиться с помощью специальных почтовых программ на компьютере отправителя (например: Microsoft Office Outlook, Eudora, Opera Mail, Outlook Express и т.д.). Это очень неудобно поскольку задача по их установке и настройке ложится на посетителей сайта. Поэтому для обработки введённой в форму информации используется специальная программа, написанная на языке php (php-скрипт). Она устанавливается на сервере и с её помощью происходит отправка сообщений с сайта.

Как создать php-скрипт для отправки сообщений с сайта если ты не Php-программист?

Для многих создателей сайтов изучение php ради написания одной такой программы не является необходимостью. Это слишком долгий и трудоёмкий процесс. К тому же всегда можно скачать готовый php-скрипт с различных сайтов. Однако нигде не даётся детальное описание принципа его работы и расшифровка отдельных команд. Для тех кто хочет не просто вставить готовый php-скрипт, но и понять принцип его работы ниже приведена форма отправки и программа для её обработки с детальным описанием.

Форма для отправки сообщений


Поле №1

Поле №2

Присоединить файл (не более 2 Mбайт):




 
HTML-код

<form enctype="multipart/form-data" action="Здесь необходимо записать имя php-скрипта (например-myscript.php)" method="post">

<table border="0" width="360" cellspacing="0">
<tr>
<td style="text-align: left">
<b>Поле №1</b>
</td>
</tr>

<tr>
<td style="text-align: left">
<input type="text" name="pole1" size="40">
</td>
</tr>


<tr>
<td style="text-align: left">
<b>Поле №2</b>
</td>
</tr>

<tr>
<td style="text-align: left">
<textarea name="pole2" rows="5" cols="40"></textarea>
</td>
</tr>

<tr>
<td style="text-align: left">
<b>Присоединить файл (не более 2 Мбайт):</b>
</td>
</tr>

<tr>
<td style="text-align: left">
<INPUT name="fail" type="file" size="40">
</td>
</tr>

<tr>
<td height="30">
<center>
<input type="submit" name="submit" value="Отправить">
<input type="reset" nane="res" value="Очистить">
</center>
</td>
</tr>

</table>


</form>


php-скрипт (начало)

<?
$myemail= "Мой e-mail";
$refreshpage="Моя страница с формой";
$maxmsg="1500";

Комментарии

Переменной $myemail присваиваем электронный адрес куда будет отсылаться сообщение. Переменной $refreshpage присваивается адрес страницы куда мы возвратимся после отправки. Обычно это страница где находится сама форма. Переменной $maxmsg присваивается максимальное количество символов в тексте поля №2.

php-скрипт (продолжение)

$back_pole2="
<script language='Javascript'>
alert('Произошла ошибка. Ваше сообщение или пустое или превышает $maxmsg символов.');
</script>";

$back_pole1 ="
<script language='Javascript'>
alert('Поле №1 не введёно');
</script>";

$send_mail ="
<script language='Javascript'>
alert('Ваше сообщение успешно отправлено');
</script>";

$size_big="
<script language='Javascript'>
alert('Размер файла более 2 Мбайт');
</script>";

Комментарии

Переменным $back_pole1, $back_pole2, $send_mail, $size_big присваивается код javascript который выдаёт окна с сообщениями при возникновении событий, указанных внутри оператора alert(). Оператор alert()-открывает окно с сообщением.

php-скрипт (продолжение)

$pole2=$_POST['pole2'];
$pole1= $_POST['pole1'];
if ($pole2 == "" || strlen($pole2) > $maxmsg)
{
print "$back_pole2";
print "
<script language='Javascript'>
<!--
function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 0);
//-->
</script>";
exit;
}
if($pole1=="")
{
print "$back_pole1";
print "
<script language='Javascript'>
<!--
function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 0);
//-->
</script>";
exit;
}

Комментарии

Переменной $pole2 мы присваиваем содержимое текстового поля (Поле №2) формы с именем pole2. Это делается следующим образом. Все данные из полей, при использовании для передачи метода POST, помещаются в массив $_POST. Для того чтобы определить содержимое какого-то поля необходимо указать имя массива, а в скобках либо номер ячейки где находится это содержимое, либо в кавычках имя этого поля. В нашем случае имя поля №2 в форме - pole2. Поэтому содержание его будет $_POST['pole2'] и мы его присваиваем переменной $pole2=$_POST['pole2']. Аналогичным образом мы присваиваем переменной $pole1 значение поля №1 с именем pole1 - $pole1= $_POST['pole1']. Далее идёт условная конструкция. В PHP 5 она имеет вид:

if (условие)
{
действие 11;
действие 12;
...
действие 1n;
}
else
{
действие 21;
действие 22;
...
действие 2m;
}

Суть этой конструкции в том, что она проверяет некоторое условие и если оно оказывается истинным, то выполняются действия 11-1n. Если условие ложно, то выполняются действия 21-2m. В нашем случае условие состоит из двух частей:

  1. $pole2=="" - сравнивается содержимое переменной $pole2 (поля №2) с пустой строкой.
  2. Количество символов значения переменной $pole2 с помощью функции strlen() со значением переменной $maxmsg. В нашем случае это 1500 символов.

Значок || означает союз "или". Смысл этого условия такой: Если количество символов в поле №2 рано нулю (т.е. в это поле мы ничего не ввели) или больше 1500, то это условие истинно. При этом выполняются два действия:

  1. Вывод на экран сообщения "Ваше сообщение или пустое или превышает 1500 символов". Это делается с помощью оператора вывода print "". В кавычках задана переменная $back_pole2, которая выдаёт окно с соответствующим текстом.
  2. Переходим к странице с формой. Сообщение при этом не отправляется.

Аналогично проверяется пустое ли Поле №1 ($pole1=="") и в случае истинности этого условия выводится сообщение и мы переходим к странице с формой. Сообщение также не отправляется.

php-скрипт (продолжение)

if(empty($_FILES['fail']['tmp_name']))
{
$myfail='Файл не был добавлен';
}
if(!empty($_FILES['fail']['tmp_name']))
{
if ($_FILES['fail']['size']>2097152)
{
print "$size_big";
print "
<script language='Javascript'>
<!--
function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 0);
//-->
</script>";
exit;
}
else
{
$fail_name = $_FILES['fail']['name']; // Имя файла
$fail_size=$_FILES['fail']['size']; // Размер файла
$myfail='Имя: '.$fail_name.' Размер: '.$fail_size.' Находится в папке fails на сервере';
$uploaddir = 'fails/';
$uploadfile = $uploaddir.basename($_FILES['fail']['name']);
if (copy($_FILES['fail']['tmp_name'], $uploadfile))
{
echo "<h3>Файл успешно загружен на сервер</h3>";
}
else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
}
}

Комментарии

С помощью данного php-кода происходит загрузка файла на сервер. Это происходит следующим образом: Сначала создается суперглобальный массив $_FILES. Этот массив содержит информацию о загруженном файле. Этот массив имеет 5 ячеек:

  1. $_FILES['uploadfile']['name'] - имя файла до его отправки на сервер, например, pict.gif;
  2. $_FILES['uploadfile']['size'] - размер принятого файла в байтах;
  3. $_FILES['uploadfile']['type'] - MIME-тип принятого файла (если браузер смог его определить), например: image/gif, image/png, image/jpeg, text/html;
  4. $_FILES['uploadfile']['tmp_name'] (так мы назвали поле загрузки файла) - содержит имя файла во временном каталоге, например: /tmp/phpV3b3qY;
  5. $_FILES['uploadfile']['error'] - Код ошибки, которая может возникнуть при загрузке файла.

В качестве значения uploadfile указывается имя поля прикрепления файла. В нашем случае fail: $_FILES['fail']['name']. С помощью условия и функции empty() проверяется пустое ли поле для прикрепления файла (т.е. мы не присоединили файл). Если это условие выполняется, то переменной $myfail присваивается строка 'Файл не был добавлен'. Далее проверяем заполнено ли данное поле (файл присоединён). Для это перед функцией empty() добавляем !. Он означает отрицание (!empty($_FILES['fail']['tmp_name'])-поле не пустое). Если это условие выполняется, то проверяем следующее условие-будет ли размер файла более 2 Мбайт (2097152 байт). Если да, то выводим на экран сообщения "Размер файла более 2 Мбайт". Это делается с помощью оператора вывода print "". В кавычках задана переменная $size_big, которая выдаёт окно с соответствующим текстом. Переходим к странице с формой. Сообщение при этом не отправляется. Иначе, если файл прикреплён и его размер менее 2 Мбайт, присваиваем переменной $fail_name имя файла, $fail_size-размер файла, $myfail-строку, содержащую эти данные, $uploaddir-название папки на сервере куда будет копирован файл, $uploadfile-путь к файлу. В нашем случае папка называется fails. Затем копируем файл в эту папку с помощью функции copy (source, dest). Эта функция создает копию файла, чье имя передано в параметре source, в файл с именем dest. Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

php-скрипт (окончание)

$headers="Content-Type: text/plain; charset=windows-1251\r\n";
$allmsg='1. Поле №1: '.$pole1.chr(13).chr(10).'2. Сообщение: '.$pole2.chr(13).chr(10).'3. Файл: '.$myfail.chr(13).chr(10);
mail($myemail, "Сообщение", $allmsg, $headers);
print"$send_mail";
print "
<script language='Javascript'>
<!--
function reload() {location = \"$refreshpage\"}; setTimeout('reload()', 0);
//-->
</script>";
?>

Комментарии

Если все поля заполнены верно, то их содержимое объединяется и присваивается переменной $allmsg. Затем выполняется функция mail(). Она посылает сообщение с текстом, содержащимся в переменной $allmsg, по адресу в переменной $myemail. После отсылки выводится сообщение "Ваше сообщение успешно отправлено" и мы переходим к странице с формой.

Для использования php-скрипта его необходимо переписать в блокноте. Затем сохранить с расширением php. Например myscript.php. Вставить форму в страницу. В той же директории что и страница с формой должен находиться php-скрипт. Там же нужно создать папку fails в которую будут отсылаться файлы.

В начало


|   предыдущая   |   каталог статей   |   следующая   |
|   1   |   2   |   3   |

    


Главная
О проекте
ИТ-профессии
Сертификация
Удаленная работа
Каталог статей
Контакт
 
Компания "ПРОИнфоСистем"   2009
Rambler's Top100