МДК. 09.01 Проектирование и разработка веб-приложений

Лекция по теме: "Основы работы с базами данных. Связь с базами данных MySQL"

Цель занятия:

Познакомить студентов с базовыми понятиями СУБД, научить подключаться к MySQL через PHP, выполнять базовые SQL-запросы (SELECT, INSERT и т.д.).


📌План урока

1. Что такое база данных?

  • Совокупность данных, организованных по определенным правилам.

  • Хранятся в таблицах (аналог Excel).

  • Управляется СУБД — системы управления базами данных.

2. Что такое СУБД MySQL?

  • Одна из самых популярных СУБД с открытым исходным кодом.

  • Используется во многих CMS (WordPress, Joomla).

  • Поддерживает SQL — языковые запросы к БД.

3. Основные понятия:

  • Таблица (таблица) — структура хранения данных.

  • Строка (ряд) — отдельная запись.

  • Столбец (столбец) — характеристика записи.

  • Первичный ключ (PRIMARY KEY) — запись уникального идентификатора.

4. Основные SQL-команды:

Команда Назначение
SELECT Получить данные
INSERT INTO Добавить запись
UPDATE Обновить данные
DELETE Удалить записи

5. Подключение к MySQL из PHP

Через расширение MySQLi или PDO . Пример с MySQLi:

$mysqli = new mysqli("localhost", "root", "", "test_db");

if ($mysqli->connect_error) {
die(«Ошибка подключения: « . $mysqli->connect_error);
}

6. Выполнение запроса:

$result = $mysqli->query("SELECT * FROM users");

while ($row = $result->fetch_assoc()) {
echo $row[‘username’] . «<br>»;
}

7. Безопасность:

  • Никогда не предоставляет данные напрямую в SQL (опасность SQL-инъекций).

  • Используйте подготовленные выражения ( prepare, bind_param).


🧪 Лабораторная работа: «Подключение к MySQL и вывод списков пользователей»

🎯 Цель:

Научиться подключаться к MySQL, выполнять запрос и отображать данные из таблицы.


🔧 Подготовка:

  1. Установите OpenServer или XAMPP .

  2. Создать ресурсы данных test_dbв phpMyAdmin.

  3. Создать таблицу users:

CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
  1. Добавить несколько пользователей:

INSERT INTO users (username, email) VALUES
('admin', 'admin@example.com'),
('user1', 'user1@example.com');

🛠️ Пошаговая инструкция:

🔹 Шаг 1. Подключение к БД

Созданный файл db.php:

<?php
$mysqli = new mysqli("localhost", "root", "", "test_db");
if ($mysqli->connect_error) {
die(«Ошибка подключения: « . $mysqli->connect_error);
}
?>


🔹 Шаг 2. Вывод пользователей

Созданный файл index.php:

<?php include 'db.php'; ?>

<h2>Список пользователей</h2>
<ul>
<?php
$result = $mysqli->query(«SELECT * FROM users»);

while ($row = $result->fetch_assoc()):
?>
<li><?= htmlspecialchars($row[‘username’]) ?><?= htmlspecialchars($row[’email’]) ?></li>
<?php endwhile; ?>
</ul>


🔹 Шаг 3. Попробуйте вручную добавить нового пользователя в phpMyAdmin и перезагрузить страницу — список обновится.


📝 Задания студенту:

  1. Подключиться к базе данных.

  2. Вывести список пользователей.

  3. Добавьте нового пользователя в phpMyAdmin и проверьте, что он отображает.

  4. Дополнительно: реализовать форму добавления пользователя на сайт.

[свернуть]

Лекция: Работа с файловой системой в веб-разработке

1. Что такое файловая система?

Файловая система — это структура хранения и организации данных на жёстком диске или другом носителе. На сервере веб-приложения используют файловую систему для:

  • хранения загружаемых файлов;

  • сохранения логов, текстовых данных;

  • работы с временными файлами и кешами.


2. Пути к файлам

  • Абсолютный путь — от корня файловой системы (C:/OpenServer/domains/site/uploads/image.jpg)

  • Относительный путь — от текущей директории (uploads/image.jpg)


3. Работа с файлами в PHP

📄 Открытие и чтение файла:

$file = fopen("data.txt", "r");
$content = fread($file, filesize("data.txt"));
fclose($file);
echo $content;

📝 Запись в файл:

$file = fopen("data.txt", "w");
fwrite($file, "Привет, мир!");
fclose($file);

📥 Быстрая запись и чтение:

file_put_contents("log.txt", "Новая запись\n", FILE_APPEND);
$content = file_get_contents("log.txt");

🗑 Удаление файла:

if (file_exists("data.txt")) {
unlink("data.txt");
}

4. Загрузка файлов через HTML-форму

Форма:

<form method="post" enctype="multipart/form-data">
<input type="file" name="myfile">
<button type="submit">Загрузить</button>
</form>

PHP-обработка:

if (isset($_FILES['myfile'])) {
$file = $_FILES['myfile'];
move_uploaded_file($file['tmp_name'], "uploads/" . $file['name']);
}

⚠️ Безопасность:

  • Ограничивайте размер и тип загружаемых файлов.

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

  • Не разрешайте загрузку .php-файлов — они могут быть вредоносными.


🧪 Лабораторная работа №1: Работа с файлами и загрузка на сервер

Цель:

Научиться работать с файлами: записывать данные в файл, читать их и загружать изображения на сервер.


Часть 1: Работа с текстовым файлом

🔧 Задание:

Создайте HTML-форму с текстовым полем и кнопкой.
На сервере создайте обработчик, который:

  1. Сохраняет введённый текст в файл data.txt

  2. Отображает содержимое этого файла на странице

Пример:

form.html

<form action="save.php" method="post">
<input type="text" name="user_text" required>
<button type="submit">Сохранить</button>
</form>

save.php

<?php
$text = $_POST['user_text'];
file_put_contents("data.txt", $text . "\n", FILE_APPEND);
echo «<h3>Содержимое файла:</h3>»;
echo nl2br(file_get_contents(«data.txt»));
?>

Часть 2: Загрузка изображений

🔧 Задание:

Создайте форму для загрузки изображений.
Сервер должен:

  • Загружать файл в папку uploads/

  • Проверять, что это изображение (.jpg, .png)

  • Выводить список всех загруженных изображений

Пример:

upload.html

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" required>
<button type="submit">Загрузить</button>
</form>

upload.php

<?php
$allowedTypes = ['image/jpeg', 'image/png'];
$file = $_FILES['image'];
if (in_array($file[‘type’], $allowedTypes)) {
move_uploaded_file($file[‘tmp_name’], «uploads/» . $file[‘name’]);
echo «Файл загружен.<br>»;
} else {
echo «Разрешены только JPG и PNG.»;
}echo «<h3>Загруженные файлы:</h3>»;
$files = scandir(«uploads»);
foreach ($files as $img) {
if ($img !== ‘.’ && $img !== ‘..’) {
echo «<img src=’uploads/$img‘ width=’100’><br>»;
}
}
?>

📋 Отчёт по лабораторной работе должен содержать:

  • Цель работы

  • Снимок экрана формы и результата загрузки

  • Приведённый код HTML и PHP

  • Ответы на вопросы:

    1. Чем отличается file_put_contents() от fwrite()?

    2. Как защитить загрузку от вредоносных файлов?

[свернуть]

Тема: "Cookie. HTTP-заголовки ответа сервера. Сессии"

Цели урока:

  1. Изучить механизм работы Cookie и их применение в PHP.

  2. Разобрать HTTP-заголовки ответа сервера и их роль в веб-разработке.

  3. Освоить работу с сессиями (Sessions) для хранения пользовательских данных.

  4. Научиться применять полученные знания на практике.


1. Теоретическая часть

1.1. Что такое Cookie?

Cookie — это небольшие текстовые файлы, которые сервер отправляет браузеру, а браузер сохраняет их и передаёт обратно при каждом запросе.

Основные свойства Cookie:

  • Хранятся на стороне клиента (в браузере).

  • Имеют ограниченный срок жизни (expires).

  • Могут быть защищены от чтения JavaScript (HttpOnly).

  • Используются для:

    • Авторизации

    • Отслеживания поведения пользователя

    • Сохранения настроек сайта

Пример установки Cookie в PHP:

php

Copy

Download
setcookie("user", "Ivan", time() + 3600, "/"); // Кука "user" со значением "Ivan" на 1 час

Чтение Cookie:

php

Copy

Download
if (isset($_COOKIE["user"])) {
    echo "Привет, " . $_COOKIE["user"];
} else {
    echo "Кука не установлена.";
}

Удаление Cookie:

php

Copy

Download
setcookie("user", "", time() - 3600, "/"); // Удаляем куку, устанавливая срок в прошлое

1.2. HTTP-заголовки ответа сервера

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

Основные заголовки:

  • Content-Type — тип передаваемых данных (text/htmlapplication/json).

  • Location — перенаправление (header("Location: /newpage.php")).

  • Set-Cookie — установка Cookie.

  • Cache-Control — управление кэшированием.

Примеры использования в PHP:

php

Copy

Download
header("Content-Type: application/json"); // Отправка JSON
header("Location: login.php"); // Перенаправление
header("Cache-Control: no-cache, must-revalidate"); // Запрет кэширования

Важно:

  • Заголовки должны отправляться до вывода любого контента (даже пробела или HTML).

  • Если вывод уже начался, PHP выдаст ошибку:

    Warning: Cannot modify header information - headers already sent


1.3. Сессии (Sessions)

Сессии — это механизм хранения данных на сервере в течение одного сеанса работы пользователя.

Как работают сессии?

  1. При первом обращении сервер создает уникальный session ID и отправляет его браузеру (обычно через Cookie).

  2. Браузер передает этот ID при каждом запросе.

  3. Сервер использует ID для доступа к данным сессии.

Пример работы с сессиями в PHP:

php

Copy

Download
session_start(); // Обязательно в начале скрипта!

// Запись данных в сессию
$_SESSION["username"] = "admin";
$_SESSION["auth"] = true;

// Чтение данных
if ($_SESSION["auth"]) {
    echo "Добро пожаловать, " . $_SESSION["username"];
}

// Уничтожение сессии
session_destroy();

Отличие Cookie от Сессий:

Cookie Сессии
Хранятся на клиенте Хранятся на сервере
Можно редактировать в браузере Безопаснее, недоступны клиенту
Ограниченный размер (~4 КБ) Нет жестких ограничений

2. Практическая часть

Задание 1. Работа с Cookie

  1. Создайте страницу set_cookie.php, которая устанавливает куку theme со значением dark.

  2. Создайте страницу read_cookie.php, которая проверяет наличие куки theme и выводит:

    • «Тёмная тема включена», если кука есть.

    • «Тема не выбрана», если куки нет.

Решение:

php

Copy

Download
// set_cookie.php
setcookie("theme", "dark", time() + 3600, "/");

// read_cookie.php
if (isset($_COOKIE["theme"])) {
    echo "Тёмная тема включена";
} else {
    echo "Тема не выбрана";
}

Задание 2. Перенаправление с HTTP-заголовками

  1. Создайте форму (login_form.php) с полями login и password.

  2. В обработчике (login_handler.php):

    • Если логин = admin и пароль = 123, перенаправьте на admin.php.

    • Иначе — верните на login_form.php с сообщением об ошибке.

Решение:

php

Copy

Download
// login_handler.php
if ($_POST["login"] === "admin" && $_POST["password"] === "123") {
    header("Location: admin.php");
} else {
    header("Location: login_form.php?error=1");
}

Задание 3. Авторизация через сессии

  1. Создайте форму входа (auth.php).

  2. В обработчике (auth_handler.php):

    • Запустите сессию.

    • При успешной авторизации сохраните логин в $_SESSION.

  3. Создайте страницу profile.php, которая проверяет авторизацию через сессию.

Решение:

php

Copy

Download
// auth_handler.php
session_start();
if ($_POST["login"] === "user" && $_POST["password"] === "qwerty") {
    $_SESSION["login"] = $_POST["login"];
    header("Location: profile.php");
}

// profile.php
session_start();
if (!isset($_SESSION["login"])) {
    header("Location: auth.php");
}
echo "Привет, " . $_SESSION["login"];

3. Контрольные вопросы

  1. В чем разница между Cookie и Sessions?

  2. Как установить куку с сроком жизни 1 день?

  3. Почему важно вызывать session_start() в начале скрипта?

  4. Как перенаправить пользователя на другую страницу в PHP?

  5. Как защитить куки от доступа через JavaScript?

[свернуть]

Тема урока: Обработка HTML-форм с помощью PHP

Цели урока:

  1. Научиться создавать HTML-формы и передавать данные на сервер.

  2. Освоить методы GET и POST для обработки данных форм.

  3. Изучить основы валидации пользовательского ввода.

  4. Практически закрепить навыки работы с формами в PHP.


1. Теоретическая часть

1.1. Основы HTML-форм

Форма — это элемент HTML, который позволяет пользователям вводить данные и отправлять их на сервер.

Базовая структура формы:

html

Copy

Download
Run
<form action="обработчик.php" method="GET|POST">
    <!-- Поля формы -->
    <input type="text" name="username">
    <input type="submit" value="Отправить">
</form>
  • action — указывает PHP-файл, который обрабатывает данные.

  • method — определяет способ передачи данных (GET или POST).

1.2. Разница между GET и POST

Параметр GET POST
Видимость Данные в URL (?name=value) Данные скрыты в теле запроса
Безопасность Менее безопасен Более безопасен
Ограничения Ограничение длины URL (~2048 симв.) Нет жестких ограничений
Кэширование Данные кэшируются браузером Не кэшируются
Использование Для получения данных (поиск, фильтры) Для отправки данных (логины, регистрация)

1.3. Получение данных формы в PHP

Данные формы хранятся в суперглобальных массивах:

  • $_GET — данные, переданные методом GET.

  • $_POST — данные, переданные методом POST.

Пример (обработчик form_handler.php):

php
Copy
Download
<?php
    $username = $_POST['username']; // Получаем данные из поля 'username'
    echo "Привет, $username!";
?>

1.4. Валидация данных

Перед обработкой данных нужно проверять их на корректность:

php
Copy
Download
if (isset($_POST['username']) && !empty($_POST['username'])) {
    $username = htmlspecialchars($_POST['username']); // Защита от XSS
    echo "Добро пожаловать, $username!";
} else {
    echo "Пожалуйста, введите имя!";
}

2. Практическая часть

Задание 1. Простая форма входа

  1. Создайте файл login_form.html с формой:

    • Поле login (текстовое)

    • Поле password (тип password)

    • Кнопка «Войти»

  2. Создайте обработчик login_handler.php, который проверяет:

    • Если логин = «admin», а пароль = «12345», вывести «Доступ разрешен».

    • Иначе — «Ошибка входа».

Пример формы:

html
Copy
Download
Run
<form action="login_handler.php" method="POST">
    <input type="text" name="login" placeholder="Логин">
    <input type="password" name="password" placeholder="Пароль">
    <input type="submit" value="Войти">
</form>

Задание 2. Форма регистрации с валидацией

  1. Создайте форму (register.html) с полями:

    • Имя (обязательное)

    • Email (проверка на корректность)

    • Пароль (длина не менее 6 символов)

  2. В обработчике (register_handler.php) реализуйте проверки:

    php

    Copy

    Download

    $errors = [];
    if (empty($_POST['name'])) $errors[] = "Имя обязательно!";
    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $errors[] = "Некорректный email!";
    if (strlen($_POST['password']) < 6) $errors[] = "Пароль слишком короткий!";

Задание 3. Загрузка файлов

  1. Создайте форму (upload_form.html) для загрузки изображений:

    html

    Copy

    Download

    Run

    <form action="upload_handler.php" method="POST" enctype="multipart/form-data">
        <input type="file" name="image">
        <input type="submit" value="Загрузить">
    </form>
  2. В обработчике проверяйте:

    • Тип файла (только .jpg.png).

    • Размер (не более 2 МБ).


3. Контрольные вопросы

  1. Чем отличается GET от POST? Когда какой метод использовать?

  2. Как получить данные из формы в PHP?

  3. Какие угрозы безопасности есть при работе с формами?

  4. Как проверить, что форма была отправлена?

  5. Для чего нужен атрибут enctype="multipart/form-data"?


Домашнее задание

  1. Создать форму обратной связи (имя, email, сообщение) с валидацией.

  2. Реализовать обработчик, который сохраняет данные в файл feedback.txt.

  3. Дополнительно: Добавить капчу (простую проверку: «Введите число 123»).

[свернуть]
Тема урока: Введение в PHP. Основы синтаксиса и работа с переменными.

Введение в PHP. Основы синтаксиса и работа с переменными.

Цели урока:

  1. Познакомить студентов с языком PHP, его основными возможностями и областью применения.

  2. Изучить базовый синтаксис PHP, объявление переменных и типы данных.

  3. Научиться выводить информацию в браузер.


1. Теоретическая часть

1.1. Что такое PHP?

  • PHP (Hypertext Preprocessor) – это серверный скриптовый язык программирования, предназначенный для создания динамических веб-страниц.

  • Основные особенности:

    • Открытый исходный код.

    • Интеграция с HTML.

    • Поддержка множества баз данных (MySQL, PostgreSQL и др.).

    • Кроссплатформенность (работает на Windows, Linux, macOS).

1.2. Где используется PHP?

  • Разработка веб-сайтов и веб-приложений.

  • Системы управления контентом (CMS): WordPress, Joomla, Drupal.

  • Фреймворки: Laravel, Symfony, Yii.

1.3. Как работает PHP?

  • PHP-код выполняется на сервере, а результат (обычно HTML) отправляется в браузер.

  • Пример:

    php

    Copy

    Download

    <?php
        echo "Привет, мир!";
    ?>

1.4. Основы синтаксиса PHP

  • Код PHP обрамляется тегами <?php ... ?>.

  • Инструкции заканчиваются точкой с запятой ;.

  • Комментарии:

    php

    Copy

    Download

    // Однострочный комментарий
    /* Многострочный комментарий */

1.5. Переменные и типы данных

  • Переменные начинаются со знака $.

  • Типы данных:

    • int (целые числа)

    • float (числа с плавающей точкой)

    • string (строки)

    • bool (логический тип: true/false)

    • array (массивы)

    • null (отсутствие значения)

Пример:

php

Copy

Download

<?php
    $name = "Иван"; // string
    $age = 25;      // int
    $isStudent = true; // bool
    echo "Меня зовут $name, мне $age лет.";
?>

1.6. Вывод данных

  • echo – выводит строку.

  • print – аналогично echo, но возвращает значение.

  • var_dump() – выводит информацию о переменной (тип, значение).

Пример:

php

Copy

Download

<?php
    $number = 42;
    echo "Число: $number<br>"; // Выведет: Число: 42
    var_dump($number);         // Выведет: int(42)
?>

2. Практическая часть

Задание 1: Первая программа на PHP

  1. Создайте файл index.php.

  2. Напишите код, который выводит ваше имя и возраст.

  3. Добавьте переменную $city и выведите информацию в формате:
    «Меня зовут [имя], мне [возраст] лет, я живу в [город].»

Пример решения:

php

Copy

Download

<?php
    $name = "Алексей";
    $age = 20;
    $city = "Москва";
    echo "Меня зовут $name, мне $age лет, я живу в $city.";
?>

Задание 2: Работа с разными типами данных

  1. Создайте переменные разных типов (intfloatstringbool).

  2. Выведите их с помощью echo и var_dump().

Пример:

php

Copy

Download

<?php
    $price = 99.99;
    $isAvailable = true;
    $product = "Клавиатура";
    echo "Товар: $product, Цена: $price, Наличие: $isAvailable <br>";
    var_dump($price, $isAvailable);
?>

3. Итоги урока

  • PHP – серверный язык для веб-разработки.

  • Переменные начинаются с $, поддерживают разные типы данных.

  • echo и var_dump() используются для вывода информации.


Домашнее задание

  1. Написать PHP-скрипт, который выводит информацию о вас (имя, возраст, хобби).

  2. Создать переменные с разными типами данных и вывести их с пояснениями.

  3. Дополнительно: изучить, как работает print_r() и чем отличается от var_dump().

[свернуть]

Loading

Обсуждение закрыто.