Тема: Фіналізація MVP-проєкту та його підготовка до здачі. Тестування проєкту (QA), перевірка умов доступу (доступ до завдань лише після логіну, відображення лише власних завдань поточного користувача), демонстрація та деплой на хостинг.
Мета: Навчитися проводити фінальні аудити безпеки та бізнес-логіки системи (Data Isolation), виконати тестування продукту перед здачею замовнику (або викладачу в даному випадку), та (за бажанням) навчитись деплоїти проєкт в інтернет на реальний сервер.
Технологічний стек: Manual QA, CPanel/Hostinger/Vercel (залежно від вибору платформи розгортання), остаточне тестування PHP.
var_dump() і print_r()).db.php для реального MySQL-серверу на цьому хостингу.Наразі, якщо зареєструвати двох користувачів, вони обидва бачать одні й ті самі завдання. Це є критичним багом (Broken Access Control) для будь-якого сайту!
У $_SESSION['user_id'] ми зберегли ID нашого користувача.
Змініть SQL-запит у класі TaskController на виведення всіх завдань: SELECT * FROM tasks WHERE user_id = :uid. Зв’яжіть :uid із значенням із $_SESSION['user_id'].
Те саме зробіть у запиті на видалення (DELETE... WHERE id= :id AND user_id = :uid) та на створення (поле user_id повинно братися зСессії, а не з випадкового числа!).
Зареєструйте на сайті користувача userA@test.com і спробуйте:
userB@test.com.http://localhost/.../delete.php?id=1 (ID завдання користувача A).
Якщо завдання यूजर A не видалилось — ваша система безпеки з Кроку 1 працює ідеально.Мертві фрагменти коду та var_dump — “поганий тон”. Перегляньте усі *.php файли або використовуйте глобальний пошук у вашій IDE (Ctrl(Cmd) + Shift + F). Знайдіть всі слова “dump” або “die” або “print” (залишені для відлагодження) та видаліть їх.
Також видаліть непотрібнi чи тестові css класи або файли, які залишилися в папці та не використовуються.
Ви можете залити проєкт на безкоштовні хостинги для PHP:
database_dump.sql (або просто створіть такі ж таблиці з нуля).public_html.db.php: замість локального логіна-пароля (root/пусто) вставте ті реквізити бази даних, які вам надав хостинг у контрольній панелі.AND user_id = :uid у запити WHERE захищає від цього?id?var_dump() і відображення системних помилок (display_errors = On) для звичайних користувачів у Production-випуску категорично не можна з міркувань безпеки?lab18.md надіслати підсумковий звіт за весь семестр, перелічивши технології та концепції, які ви використали.delete.php), який демонструє ізоляцію за user_id.