
Отчеты / Web. Лабораторная работа 7
.pdfФедеральное агентство связи ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА» (СПбГУТ)
Факультет инфокоммуникационных сетей и систем Кафедра программной инженерии и вычислительной техники
ЛАБОРАТОРНАЯ РАБОТА №7 по дисциплине «Web-технологии»
на тему «Знакомство с Web-сервером и обработкой данных с помощью PHPпрограмм»
Выполнил: студент 3-го курса дневного отделения группы ИКПИ-85
Коваленко Леонид Александрович Преподаватель:
профессор, к. т. н. Бузюков Лев Борисович
Санкт-Петербург
2020

Задание №1 Создадим на сервере файл info.php (табл. 1).
Таблица 1 — Файл «info.php»
<?php phpinfo();
?>
Результат выполнения задания №1 представлен на рис. 1.
Рисунок 1 — Отображение «info.php» ОС на сервере: Linux x86_64. Веб-сервер: Apache. Название сервера: ikpi85.rf.gd. Версия PHP: 7.4.8.
Задание №2
Создадим файл sum.php (табл. 2), выполняющий сложение двух числовых переменных. Исходные данные для вычисления передадим как параметры при вызове PHP-файла: http://ikpi85.rf.gd/sum.php?var1=3&var2=5 Таблица 2 — Файл «sum.php»
<?php
$x = $_GET['var1']; $y = $_GET['var2'];
if (!empty($x) && !empty($y))
echo "<p>$x + $y = " . ((string) ((int) $x + (int) $y)) . "</p>"; else {
$str = $_SERVER['HTTP_X_FORWARDED_PROTO'] . '://' . $_SERVER['HTTP_HOST']
. $_SERVER['PHP_SELF'] . '?var1=3&var2=5';
echo "See <a href='$str' style='color:blue'>$str</a>";
}
?>
Результат выполнения задания №2 представлен на рис. 2, 3.
2

Рисунок 2 — Отображение «sum.php» (без параметров)
Рисунок 3 — Отображение «sum.php» (с параметрами) Задание №3
Создадим файл params.php (табл. 3), отображающий в окне браузера параметры Web-сервера:
1.IP-адрес удаленного компьютера, метод пересылки данных;
2.Программное обеспечение сервера, протокол передачи данных;
3.Каталог для хранения документов на сервере, IP-адрес сервера;
4.Почтовый адрес администратора сети, имя хост-компьютера. Таблица 3 — Файл «params.php»
<?php
echo "<p>1. IP-адрес удаленного компьютера, метод пересылки данных: "; echo $_SERVER['REMOTE_ADDR'] . ", " . $_SERVER['REQUEST_METHOD'] .
"</p>";
echo "<p>2. Программное обеспечение сервера, протокол передачи данных: "; echo $_SERVER['SERVER_SOFTWARE'] . ", " . $_SERVER['SERVER_PROTOCOL'] .
"</p>";
echo "<p>3. Каталог для хранения документов на сервере, IP-адрес сервера:
";
echo $_SERVER['DOCUMENT_ROOT'] . ", " . $_SERVER['SERVER_ADDR'] . "</p>"; echo "<p>4. Почтовый адрес администратора сети, имя хост-компьютера: "; echo $_SERVER['SERVER_ADMIN'] . ", " . $_SERVER['HTTP_HOST'] . "</p>";
?>
Результат выполнения задания №3 представлен на рис. 4.
Рисунок 4 — Отображение «params.php» Задание №4
Создадим Web-страницу с формой HTML (табл. 4), которая содержит поля ввода и кнопку подтверждения. При нажатии кнопки подтверждения форма отсылает данные на сервер для обработки. Результат выводится вместе с исходными данными.
3

Задание: фамилия, экзаменационные оценки по трем предметам — вычислить средний балл и выбрать стипендию (повышенную или обычную). Таблица 4 — Файл «form_send.php»
<?php
$error = null;
if ($_SERVER['REQUEST_METHOD'] == 'POST') { $family = $_POST['family'];
$markProg = $_POST['markProg']; $markMath = $_POST['markMath']; $markWeb = $_POST['markWeb'];
$error = empty($family) || empty($markProg) || empty($markMath) || empty($markWeb);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Отправка данных</title>
</head>
<body>
<?php
if ($error == true || is_null($error)) { ?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="post"> <input type="text" name="family" value="<?=$family?>"
placeholder="Фамилия" required="required" /><br>
<label>Оценка по дисциплине «Программирование»</label><input type="number" value="<?=$markProg?>" name="markProg" min="2" max="5" required="required" /><br>
<label>Оценка по дисциплине «Математика»</label><input type="number" value="<?=$markMath?>" name="markMath" min="2" max="5" required="required"
/><br>
<label>Оценка по дисциплине «Web-технологии»</label><input type="number" value="<?=$markWeb?>" name="markWeb" min="2" max="5" required="required" /><br>
<?php
if ($error == true)
echo "<label>Ошибка отправки! Некоторые данные не были введены! Попробуйте снова!</label><br>";
?>
<input type="submit" value="Отправить" />
</form>
<?php
}
else { ?>
<h3>Фамилия: <?=$family?></h3>
<p>Оценка по дисциплине «Программирование»: <?=$markProg?></p> <p>Оценка по дисциплине «Математика»: <?=$markMath?></p> <p>Оценка по дисциплине «Web-технологии»: <?=$markWeb?></p> <p>Средний балл: <?=($markProg + $markMath + $markWeb) / 3?></p>
<p>Тип стипендии: <?=($markProg == 5 && $markMath == 5 && $markWeb == 5 ? 'Повышенная' : 'Обычная')?></p>
<?php
}
?>
</body>
</html>
Результат выполнения задания №4 представлен на рис. 5, 6, 7, 8.
4

Рисунок 5 — Отображение «form_send.php» (изначальный вид)
Рисунок 6 — Отображение «form_send.php» (при отправки пустых данных сообщение об ошибке)
Рисунок 7 — Отображение «form_send.php» (результат отправки корректных данных, обычная стипендия)
Рисунок 8 — Отображение «form_send.php» (результат отправки корректных данных, повышенная стипендия)
Задание №5
Создадим Web-страницу с формой HTML (табл. 5), содержащей поле ввода и кнопку подтверждения. В поле ввода вводится строка, состоящая из нескольких слов. Сценарий PHP обрабатывает строку в соответствии с заданием.
Задание: вычислить количество слов в строке. Таблица 5 — Файл «str_count.php»
<?php
$str = $_POST['string']; $count = null;
5

if ($_SERVER['REQUEST_METHOD'] == 'POST' && !is_null($str)) $count = count(preg_split('/\s+/', $str));
//| Регулярное выражение как последовательность пробельных символов.
//| preg_split($pattern, $str) формирует массив вхождений
//| регулярного выражения $pattern в строке $str, а count($array)
//|__возвращает размер массива $array
?>
<!DOCTYPE html>
<html>
<head>
<title>Число слов в строке</title>
</head>
<body>
<p>Посчитать число слов в строке:</p>
<form action="<?=$_SERVER['PHP_SELF']?>" method='post'> <input type="text" name="string" /><br>
<input type="submit" value="Отправить" />
</form>
<?php
if (!is_null($count)) { ?>
<p>Текст: <?=$str?></p> <p>Слов: <?=$count?></p> <?php
}
?>
</body>
</html>
Результат выполнения задания №5 представлен на рис. 9, 10, 11.
Рисунок 9 — Отображение «form_send.php» (изначальный вид)
Рисунок 10 — Отображение «form_send.php» (после ввода текста «Привет, мир!»)
Рисунок 11 — Отображение «form_send.php» (после ввода текста «Два слова Two words 5»)
6