
- •Методические указания к выполнению лабораторных работ Предисловие
- •Библиографический список
- •Лабораторная работа № 1 Тема №1. ИнсталляцияMySqLи создание локального сервера
- •1. Цель работы
- •2. Основные технические возможности
- •3. Описание установки
- •4. Порядок выполнения работы
- •5. Содержание отчета
- •Лабораторная работа № 1
- •6. Содержание отчета
- •Лабораторная работа № 2 Тема №1. Создание баз и таблиц данных
- •1. Цель работы
- •2. Основные сведения
- •3. Программа работы
- •4. Указания к выполнению работы
- •3. Программа работы
- •00 Проверка моего домена с именем Moy.Loc
- •4. Указания к выполнению работы
- •5. Содержание отчета
- •3. Указания к выполнению работы
- •Задание 2: Разработать html-форму с методом Post
- •Тема №2. Передача значений переменным в сценариях php. Использование возможностей метода get без html-формы для передачи значений переменных в сценариях php
- •Тема №3. Создание формы и рнр-сценария в одном файле
- •Задание 1: Получение данных из текстового поля
- •I курсив
- •Тема №4. Использование чисел. Управляющие структуры
- •Тема №5. Использование управляющей структурыswitch
- •Тема № 6. Использование регулярных выражений в сценариях рнр
- •Проверка ошибок
- •Задание 1. Вывод информации о ошибочно заполненных полях формы
- •Задание 2. Использование функций пользователя для контроля полей формы
- •Задание 3. Проверка ограничений в текстовом поле.Lab6_0_2.Php
- •Задание 4. Специфика имени пользователя. Lab6_0_3.Php
- •Задание 5. Специфика имени пользователя с помощью JavaScript. Lab6_0_4.Php
- •Тема №7. Работа с массивами
- •Задание 1. Означивание массива и вывод на экран. Lab7_0.Php.
- •Задание 4. Сортировка массива.Lab7_3.Php.
- •Тема №8. Функции в сценариях рнр
- •Задание 1. Вложенные функции.Lab8_0_0.Php
- •Задание 2. Объявление функций внутри других функций.Lab8_0.Php
- •Задание 3. Возврат значений функцией.Lab8_1.Php
- •Задание 4. Возврат нескольких значений функцией.Lab8_2.Php
- •Задание 5. Возвращение функцией нескольких величин.Lab8_3.Php
- •Задание 6. Рекурсивные функции .Lab8_4.Php
- •Задание 7. Функции-переменные.Lab8_5.Php
- •Задание 8. Построение библиотек функций.Lab8_6_0.Php.
- •Задание 9. Построение шаблона сайта.Lab8_7_0.Php.
- •Тема №9. Использование файлов для хранения данных в сценариях рнр
- •Создание сценария загрузки.
- •Задание 3. Сохранение пользовательских данных в текстовом файлеLab9_5.Php
- •Задание 4. Сохранение пользовательских данных в текстовом файлеLab9_6_0.Php
- •Тема № 10. Работа с каталогами в сценариях рнр
- •Тема №11. Создание панели управления файлами
- •Задание 1. Разработать форму и сопутствующее ей приложение для панели управления файлами.
- •Тема № 12.Работа с базой через монтторMySql и PhpMyAdmin
- •Задание 1. Создать базу данных через командную строку
- •Задание 3. Вставка данных в базу данных
- •Задание 4. Создание командных файлов и файлов сценариев для вставки данных в базу данных.
- •Тема № 13. Извлечение данных из базы данных
- •Задание 1. Оператор выборки данныхSelect
- •Задание 2. Извлечение данных по определенному критерию
- •Задание 3. Извлечение данных из нескольких таблиц
- •Задание 4. Поиск несоответствующих строк
- •Задание 5. Использование псевдонимов имен таблиц (as)
- •Задание 6. Извлечение данных в определенном порядке
- •Задание 7. Группировка и агрегирование данных
- •Задание 8. Обновление записей в базе данных (update)
- •Задание 10. Удаление записей, таблиц и базы данных (delete)
- •Тема № 14.Php и MySql. Доступ к базе данных MySql из Web с помощью рнр
- •Задание 1. Изучение работы архитектуры Web-баз данных
- •Задание 2. Проверка и фильтрация данных, исходящих от пользователя. Использование объектно-ориентированного синтаксисаPhp
- •Задание 3. Внесение новой информации в базу данных. Проверка и фильтрация данных, исходящих от администратора
- •Задание 4. Создание и удаление баз данных
- •Содержание
Создание сценария загрузки.
Перед началом создания сценария запомните список переменных, которые создаются автоматически после успешной загрузки файла. Основная часть имени переменных - myfile - является именем поля ввода созданной в предыдущей форме (см. строку 15, рис 3.131).
$myfile - значение ссылается на временный файл на Web-сервере.
$myfile_name - значение является действительным именем файла, который был загружен. Например, если имя файла было me.jpg, то значение $myfile_name будет me.jpg.
$myfile_size - значение является длиной загруженного файла в байтах.
$myfile_type — значение является типом загруженного файла, таким как, например, image/jpg.
Созданный вами файл должен выглядеть так, как показано на рис. 9.3.
Рис. 3.131. Код HTML формы.
Целью создаваемого сценария является следующее:
взять загруженный файл, скопировать его в папку для документов Web-сервера и вернуть подтверждающее сообщение пользователю, содержащее все переменные из указанного выше списка.
Создайте с помощью текстового редактора новый файл с именем Lab9_1.php (рис. 3.131).
Сохраните созданный файл с именем Lab9_1.php в папке для документов вашего Web-сервера.
Загрузкa файла с помощью формы и сценария
Теперь, когда вы создали форму и сценарий для загрузки файла, проверим, как все это работает.
Запустите свой Web-браузер, в поле ввода Адрес введите
http://localhost/php/Lab9_0.php
и нажмите клавишу Enter. Браузер загрузит страницу Загрузка файла (рис. 3.130). Нажмите кнопку Обзор. На экране появится диалог Выбор файла. В качестве файла пересылки укажите файл "W:\home\localhost\www\php\img\footer.jpg" (рис. 3.132).
Рис. 3.132. Выбор файла для отсылки на сервер.
Используя этот диалог, найдите на своем компьютере любой файл с изображением размером не более 2 Мбайт, выберите его и нажмите кнопку Открыть. Диалог Выбор файла закроется, а имя выбранного файла с полным путем будет помещено в поле ввода Файл для загрузки (рис. 3.133).
Нажмите кнопку Загрузить на сервер(рис. 3.133).
Рис. 3.133. HTML форма на экране.
По окончании загрузки в рабочем окне браузера появится сообщение об успешном ее завершении (Рис. 3.134).
Рис. 3.134. Сообщение об успешном завершении загрузки файла.
Чтобы убедиться, что файл действительно был загружен, выполните следующие действия:
Выберите команду меню браузера Файл/Открыть. На экране появится диалог Открыть (рис. 3.135)
Рис. 3.135. Диалог Открыть
В поле ввода Открыть введите полный путь к загруженному файлу, в нашем случае это w:/tmp/footer.jpg, и нажмите клавишу Enter.
Или в поле Адрес браузера укажите file://localhost/W:/tmp/footer.jpg и на экране получите следующее (рис. 3.136)Окно браузера отобразит загруженный на ваш Web-сервер файл.
Рис. 3.136.Файл, который был загружен с использованием созданного сценария
Если в программе Lab9_0.php указать другой обработчик (например, Lab9_2.php, рис. 3.137) и переслать этот же файл: "W:\home\localhost\www\php\img\footer.jpg"
<?PHP
$myfile_size = $_FILES["myfile"]["size"];//Размер файла
$myfile_type = $_FILES["myfile"]["type"];//Тип файла
$error_flag = $_FILES["myfile"]["error"];
$myfile_name = $_FILES["myfile"]["name"];//Имя файла
if ($myfile_name !="")
{
echo "Можно копировать файл myfile=".$_FILES["myfile"]["tmp_name"]." <br> ";
if(@copy($_FILES["myfile"]["tmp_name"],
"w:/tmp/".$_FILES["myfile"]["name"]) )
{
echo("Файл успешно загружен <br>");
$myfile = $_FILES["myfile"]["tmp_name"];
$fp = fopen($myfile,"r");
$content = fread($fp, filesize($myfile));
fclose($fp);
// Вывод содержимого файла на экран
print($content);
}
else
{
echo("Ошибка. Невозможно скопировать файл!!");
}
}
else
{
die ("Файл не обнаружен !!");
}
?>
<html>
<head>
<title>Lab9_2 Загрузка файла</title>
</head>
<body>
<h2>Загрузка файла завершена успешно</h2>
<p>Вы отправили файл <? echo "$myfile_name"; ?> </p>
<p>Размер файла: <? echo "$myfile_size"; ?> байт </p>
<p>Тип файла: <? echo "$myfile_type"; ?> </p>
<p>Результат получен в обработчике Lab9_2.php </p>
</body>
</html>
Рис. 3.137.Файл, который был загружен с использованием созданного сценария
Запуск модифицированной программы Lab9_0.php приводит к следующему результату (рис. 3.138).
Рис. 3.138.Файл, который был загружен с использованием созданного сценария Lab9_2.php
Задание 2. Автоматическая отправка данных по электронной почте. Lab9_4.php.
Вывести пользовательские данные в браузере несложно, но вряд ли это можно назвать содержательной обработкой пользовательского ввода. Один из способов обработки информации заключается в ее отправке по электронной почте -- например, администратору сайта.
В следующем разделе, создается небольшая форма (рис. 3.139), в которой пользователь вводит информацию и комментарии по поводу сайта.
После ввода информации данные форматируются соответствующим образом (рис. 3.140) и передаются стандартной функции PHP mail( ).
Функция mail( ) отправляет сообщение заданному адресату по электронной почте.
Рис. 3.139. Форма ввода
Синтаксис функции mail( ).
boolean mail (string получатель, string тема, string сообщение [, string доп_заголовки])
В параметре тема передается тема сообщения. Параметр сообщение содержит текст сообщения, а необязательный параметр доп_заголовки предназначен для включения дополнительной информации (например, атрибутов форматирования HTML), пересылаемой с сообщением.
В системе UNIX функция mail( ) использует утилиту sendmail. В Windows эта функция работает лишь при наличии установленного почтового сервера или если функция mail( ) связана с работающим сервером SMTP. Эта задача решается модификацией переменной SMTP в файле php.ini.
Если вы сделали все необходимое и функция mail( ) работает в вашей системе, попробуйте выполнить следующий фрагмент (конечно, адрес webserver@example.com заменяется вашим настоящим адресом электронной почты).
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Lab9_4 Отправка по Email</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#cbda74"
vlink="#808040" alink="#808040">
<p>Lab9_4.php</p>
<?
function sendMail($name,$email,$feedback)//пользовательская функция,
//используюшая стандартную функцию Email
//$name - Фамилия, имя клиента
//$email - Email клиента
//$feedback -мнение клиента
{
$toaddress = 'feedback@example.com';
$subject = 'Обратная связь от Web-сайта';
$mailcontent = 'ФИО клиента: '.$name."\n"
.'Email-адрес клиента: '.$email."\n"
."Комментарии клиента: \n".$feedback."\n";
$fromaddress = 'From: webserver@example.com';
echo ("<br>Сообщение на Mail <br>".$mailcontent."<br>");
// кому тема сообщение отправитель
mail($toaddress, $subject, $mailcontent, $fromaddress) or
die("Could not send email!");
//
echo ("После вызова функции nl2br<br>");
//функция nl2br заменяет в переданной ей строке все
//символы новой строки (\n) на символ <br/>.
echo ("Сообщение <br>".nl2br($mailcontent)."");
return true;
} // конец тела функции
// тело основной пограммы
$name = $_POST['name'];
$seenform=$_POST['seenform'];
$email=$_POST['email'];
$feedback=$_POST['feedback'];
// Создать форму
$form = "
<form action=\"Lab9_4.php\" method=\"post\">
<input type=\"hidden\" name=\"seenform\" value=\"z\">
<b>Пожалуйста, сообщите Ваше мнение о нашей работе.</b><br>
Фамилия, имя:<br>
<input type=\"text\" name=\"name\" size=\"20\" maxlength=\"20\" value=\"$name\"><br>
Ваш Email:<br>
<input type=\"text\" name=\"email\" size=\"20\" maxlength=\"40\" value=\"$email\"><br>
Ваше мнение:<br>
<textarea name=\"feedback\" rows=\"3\" cols=\"30\"></textarea><br>
<input type=\"submit\" value=\"Отправить мнение\">
</form>";//конец создания формы
if ($seenform != "z"): // Заполнялась ли форма ранее?
print "$form"; // Первая прорисовка формы
else: // Пользователь заполнил форму. Проверить введенные данные.
$error_flag = "n"; //признак что ошибок при заполнении формы нет
if ($name == ""): //поле имени не содержит информацию
print "<font color=\"red\"> Вы забыли ввести Ваше имя </font><br>";
$error_flag = "y";//признак наличия ошибки
else:
if ($email == ""):// поле адреса не содержит информацию
$error_flag = "y";
print "<font color=\"red\">Укажите правильный email
address! Он не должен быть пустым.</font><br>";
else:
//Преобразовать все алфавитные символы в адресе электронной почты
$email = strtolower(trim($email));// к нижнему регистру
endif; //if ($email == "")
endif; //if ($name == "")
if(!empty($_POST['email'])):
//Убедиться в правильности синтаксиса адреса электронной почты
//Будем считать, что стандартный адрес электронной почты выглядит так:
//admin@mail.ru
//Адрес состоит из двух частей это:
// admin - имя пользователя.
// mail.ru - домен, доменное имя.
//Их разделяет знак @(собака).
//Имя пользователя - может состоять из букв разного регистра,
//цифр, знаков подчёркивания, точек, минусов.
//Доменное имя - так же может состоять из букв разного
//регистра, цифр, знаков подчёркивания, точек, минусов.
if(preg_match("|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,6}$|i", $_POST['email'])):
echo $_POST['email']. " Email - Правильный.";
$error_flag = "n";
sendMail($name,$email,$feedback); //отсылка почты
else:
$error_flag = "y";
echo $_POST['email']. " Email - НЕправильный.<br>";
print "<font color=\"red\"> Пример правильного возможного
email: admin@mail.ru</font><br>";
endif;
else:
//echo "Вы не ввели email.".$error_flag;
if ($error_flag == "y"):
// Если флаг ошибки $error_flag установлен, то
// echo "заново отобразить форму.";
print "$form";
else: // Обработать данные пользователя
print "<br>Данные введены правильно<br>";
sendMail($name,$email,$feedback);
endif;
endif; //if(!empty($_POST['email']))
endif;
?>
</body>
</html>
Рис. 3.140.Файл Lab9_4.php для создания формы ввода и отправки данных по электронной почте.
Пусть пользователь ввел в форму (рис. 3.139) следующую информацию (рис. 3.141).
Рис. 3.141. Заполненная форма (файл Lab9_4.php).
Если пользователь
использует кнопку
,
то программа проверит исходные данные
и в случаи их правильности вызовет
пользовательскую функциюsendMail(),
которая подготовит данные для пересылки
и вызовет стандартную функцию mail(
) и пользовательские данные отправляются
по адресу, определяемому переменной
$toaddress.
Затем в браузере выводится сообщение
для пользователя.
Рис. 3.142. Сообщение для пользователя (файл Lab9_4.php, функция sendMail()).
В теле функции sendMail() использована стандартная функция nl2br, которая заменяет в переданной ей строке все символы новой строки (\n) на символ <br/>.
Таким образом после оператора
echo ("Сообщение <br>".nl2br($mailcontent)."");
будет выведено сообщение вида (рис. 3.143)
Рис. 3.143. Сообщение для пользователя (файл Lab9_4.php, функция nl2br() ).