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

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Автоматическая отправка данных по электронной почте. Сохранение пользовательских данных в файле

Отправка данных по электронной почте

Автоматическая отправка данных по электронной почте

Вывести пользовательские данные в браузере несложно, но вряд ли это можно назвать содержательной обработкой пользовательского ввода. Один из способов обработки информации заключается в ее отправке по электронной почте — например, администратору сайта. Хотя при помощи гиперссылки mailto: можно отправить сообщение прямо из браузера, следует учитывать, что внешние приложения электронной почты настроены не на каждом компьютере. Следовательно, отправка сообщений с веб-формы более надежно гарантирует, что сообщение будет доставлено адресату.

Давайте воспользуемся одной из форм, которые были созданы нами ранее. И пусть в нее пользователь вводит информацию и комментарии по поводу сайта. Затем данные форматируются соответствующим образом и передаются стандартной функции РНР mail(). Но прежде чем переходить к построению формы, необходимо предварительно рассмотреть синтаксис функции mail().

mail( получатель, тема, сообщение [, доп_заголовки])

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

Внимание! В системе UNIX функция mail() использует утилиту sendmail. В Windows эта функция работает лишь при наличии установленного почтового сервера или если функция mail() связана с работающим сервером SMTP. Эта задача решается модификацией переменной SMTP в файле php.ini.

Для проверки работы системы выполним фрагмент кода:

<?php
$email = "sevidi@mail.ru";

$subject = "Создание динамичных сайтов";

$message = "Предлагаем учатие в разработке";

$headers = "From: sevidi@mail.ru";

mail ($email, $subject, $message, $headers);

?>

Внимание! Если при открытии файла веб-браузер выдает ошибку: "Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for sevidi@yndex.ru in D:\sevidi\240.php on line 18", то вам необходимо установить или настроить SMTP server, который входит в состав IIS.

При обширной переписке следует использовать специализированные почтовые программы вроде majordomo, в простых случаях функции РНР mail() оказывается вполне достаточно.

Поддержка на сайте возможности отправки электронной почты обеспечивает обратную связь с посетителями ваших веб-страниц.

Создадим форму для отправки электронной почты.

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Отправка электронной почты</title>
</head>

<body bgcolor="#CCFFFF">
<form action="241.php" method="post" name="myform">
<table border="0" cellpadding="5">
<tr>
<td width="124">Ваше имя</td>
<td width="282"><label>
<input type="text" name="имя" size="30">
</label></td>
</tr>
<tr>
<td>Ваш E-mail</td>
<td><label>
<input type="text" name="email" size="30">
</label></td>
</tr>
<tr>
<td valign="top">Ваше сообщение</td>
<td><label>
<textarea name="сообщение" cols="40" rows="5"></textarea>
</label></td>
</tr>
<tr>
<td> </td>
<td><label>
<input type="submit" name="button" id="button" value="Отправить">
</label></td>
</tr>
</table>
</form>

</body>
</html>

Теперь создадим скрипт для отправки электронной почты и разместим его в файле.

<?php
/*вводим фрагмент кода, формирующие параметры для почтовой функции*/
$тема="Создание динамичных сайтов";
$текст=$cообщение;
$заголовок="From: $email";
mail($email, $тема, $текст, $заголовок);
echo "Электронное сообщение отправлено";
?>

Теперь откроем файл с формой, заполним поля ввода и нажмем кнопку Отправить.

Примечание! Наша почта зарегистрирована на локольном хосте. Поэтому при отправке сообщения, в качестве E-mail, надо указывать имя домена зарегистрированного в SMTP. В нашем случае, в качестве почтового адреса, надо указать, например sevidi@test.ru.

После отправки письма появится сообщение:

После отправки письма появится сообщение

Чтобы проверить письмо откроем Мой компьютер >диск С > папка Inetpub>папка mailroot> папка Drop.

Проверка письма

Откроем письмо.

Откроем письмо

Сохранение пользовательских данных в файле. Функции работы с файловой системой.

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

Чтобы начать работу с файлом РНР, надо открыть файл. Для открытия файла воспользуемся функцией fopen().

fopen(имя_файла, режим)

Параметр имя_файла указывает на имя файла, который нужно открыть для работы. Параметр режим задает способ работы с файлом. Значение параметра w обеспечит открытие файла для записи, r — только для чтения. Если для записи открывается не существующий файл, то он будет создан. В качестве результата функция fopen() возвращает указатель на файл, который содержит информацию о файле и используется как ссылка.

Для закрытия файла используется функция:

fclose(указатель_файла)

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

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

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Сохранение пользовательских данных в файле</title>
</head>

<body>
<form action="93.php" method="post" name="form">
<table width="255" border="0" cellpadding="5">
<tr>
<td width="101">Фамилия</td>
<td width="135"><input name="фамилия" type="text" size="20" maxlength="30"></td>
</tr>
<tr>
<td>Имя</td>
<td><input name="имя" type="text" size="20" maxlength="30"></td>
</tr>
<tr>
<td>Пароль</td>
<td><input name="пароль" type="password" size="20" maxlength="30"></td>
</tr>
<tr>
<td>E-mail</td>
<td><input name="адрес" type="text" size="20" maxlength="30" value=""></td>
</tr>
</table>
Посылать информацию о новостях сайта по электронной почте?
<input name="checkbox" type="checkbox" value="">
<br>
<p>Ваши предпочтения
<select name="select" >
<option value="Програмное обеспечение">Програмное обеспечение
<option value="Обучающие программы">Обучающие программы
<option value="Другое">Другое

</select></p>
<p><input name="submit" type="submit" value="Зарегистрироваться" id="submit"></p>
</form>
</body>
</html>

В окне веб-браузера это будет выглядеть ТАК.

Теперь создадим сценарий РНР для обработки данных из формы.

Для этого создадим файл.

<?php
if(($фамилия=="")|($имя=="")|($пароль=="")|($адрес=="")){
header("Location: http://localhost/92.php"); /*Отправляет необработанные HTTP-загаловки*/
exit;
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Сохранение пользовательских данных в файле</title>
</head>

<body>
<?php
echo "Уважаемый $фамилия $имя! Вы зарегистрированы. <br>";
?>
</body>
</html>

В окне веб-браузера это будет выглядеть ТАК.

if(($фамилия=="")|($имя=="")|($пароль=="")|($адрес=="")) в этой строке выясняется, заполнены ли поля для фамилии, имени, пароля и адреса в регистрационной форме.

header("Location: http://localhost/325.html") — встроенная функция. Обеспечивает переход без каких-либо действий пользователя на заданную страницу. Функцию нельзя использовать после HTML-кода и оператора echo.

exit — обеспечивает выход из сценария.

Введем новый фрагмент кода:

$newfile=fopen("$фамилия.txt","w"); /*обеспечивает открытие и создание файла, если указанного файла не существует*/

Именем создаваемого файла будет вводимая в форме фамилия.

fclose($newfile) //задает закрытие файла

Для записи данных в файл используется функция

fwrite(указатель_файла, данные)

Используя данную функцию, в файл, связанный с указателем_файла, будут записаны данные.

Теперь запишем в созданный файл данные, полученные из формы.

Выше функции fclose($newfile) вставим новый фрагмент кода:

fwrite($newfile,$фамилия);
fwrite($newfile,"\n");

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

fwrite($newfile,$фамилия);
fwrite($newfile,"\n");
fwrite($newfile,$имя);
fwrite($newfile,"\n");
fwrite($newfile,$пароль);
fwrite($newfile,"\n");
fwrite($newfile,$адрес);
fwrite($newfile,"\n");
fwrite($newfile,$checkbox);
fwrite($newfile,"\n");
fwrite($newfile,$select);
fwrite($newfile,"\n");
fclose($newfile);

Чтобы прочитать файл есть две возможности. Первый способ заключается в использовании функции

fread(указатель_файла, число)

Данная функция позволяет считать нужное число байтов из файла, связанного с указателем_файла.

Другой способ чтения из файла связан с использованием массива. Элементы массива пронумерованы, начиная с индекса 0.

file(имя_файла)

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

Далее вставим новый фрагмент кода:

$rfile=fopen("$фамилия.txt", "r");
$data=file("$фамилия.txt");

В первой строке фрагмента кода открывается только для чтения файл, в который мы записали данные. Во второй строке считывается открытый файл в массив data(данные).

Полный код файла:

<?php
if(($фамилия=="")|($имя=="")|($пароль=="")|($адрес=="")){
header("Location: http://localhost/325.html"); //Отправляет необработанные HTTP-загoловки
exit;
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Сохранение пользовательских данных в файле</title>
</head>

<body>
<?php
echo "Уважаемый $фамилия $имя! Вы зарегистрированы. <br>";
$newfile=fopen("$фамилия.txt","w");
fwrite($newfile,$фамилия);
fwrite($newfile,"\n");
fwrite($newfile,$имя);
fwrite($newfile,"\n");
fwrite($newfile,$пароль);
fwrite($newfile,"\n");
fwrite($newfile,$адрес);
fwrite($newfile,"\n");
fwrite($newfile,$checkbox);
fwrite($newfile,"\n");
fwrite($newfile,$select);
fwrite($newfile,"\n");
fclose($newfile);
$rfile=fopen("$фамилия.txt", "r");
$data=file("$фамилия.txt");
echo "Иформацию о новостях сайта Вам будут высылать по адресу $data[3] . <br>
Ваш пароль регистрации на сайте $data[2] "
;

fclose($rfile);
?>
</body>
</html>

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

Удобнее и эффективнее хранить данные регистрации в базе данных, однако к этой теме мы вернемся позднее.

Примечание. Для копирования фалов следует использовать функцию copy(), для переименования функцию rename(), для удаления файла функцию unlink().