Сайт с базой данных принимает данные из форм, хранит их в MySQL и помнит пользователя в сессии. Главное здесь — безопасность: метод передачи, хэши паролей, подготовленные запросы и экранирование вывода.
Что нужно знать
- Проектирование БД: концептуальное (сущности и связи) → логическое (таблицы, ключи) → физическое (типы INT, VARCHAR, индексы).
- SQL: SELECT … FROM … WHERE …; INSERT INTO … VALUES …; UPDATE … SET … WHERE …; DELETE FROM … WHERE …; COUNT(*), SUM, AVG.
- GET — данные в адресе (
$_GET): поиск, страницы, ссылки. POST — в теле запроса ($_POST): пароли, комментарии, файлы. - Сессия: session_start() в начале сценария;
$_SESSION['user_id']= …; выход — очистить и session_destroy(). Данные сессии на сервере, в cookie — только её id. - Пароли: password_hash() при регистрации, password_verify() при входе. Открытым текстом не хранить.
- Запросы с данными пользователя — только подготовленные:
$st=$pdo->prepare('… WHERE login = ?');$st->execute([$login]). - Вывод чужого текста — через htmlspecialchars() (защита от XSS).
- Регулярные выражения:
preg_match('/^\d{6}$/', $s);^и$— границы строки,\d— цифра, {n} — повторение.
Где чаще всего ошибаются
- Склеивать SQL-запрос с данными из формы (SQL-инъекция).
- Отправлять пароль методом GET или хранить его открытым текстом.
- Забывать session_start() —
$_SESSIONоказывается пустым. - Выводить комментарии пользователей без htmlspecialchars().
Проверить себя
По этой же теме курса есть проверочная работа из 15 заданий на 25 минут. Проверка автоматическая, результат виден сразу — и по работе целиком, и по каждой теме.
Web-программирование · 7–9 классы · MySQL, формы GET и POST, сессии и авторизация