Ćwiczenia w PHP i SQL - Portal Sakila

Niniejszy wpis jest pewnego rodzaju "instrukcją" prowadzącą do zbudowania portalu obsługującego wypożyczalnię wideo - Sakilę. Portal ten bazuje na testowej bazie danych Sakila (tutaj zip), z której korzystam podczas zajęć związanych z bazami danych. Przy każdej liście zadań znajduje się zaznaczenie, które metody spośród CRUD są implementowane w zadaniach na liście.

(Lista jest w trakcie tworzenia. Data ostatniej aktualizacji: 10.11.2025.)

Lista 0: stworzenie szablonu witryny (można pominąć)

Aby witryna dobrze wyglądała, nie jest złym pomysłem zacząć od atrapy / makiety, czyli mockupu - szablonu wyglądu, który choć nie dostarcza żadnych funkcjonalności aplikacji, pozwala na jej wizualizację.

Warto zapoznać się z możliwościami biblioteki Bootstrap: https://getbootstrap.com/.

Lista 1: wyświetlanie informacji podstawowych (cRud)

  1. Utwórz plik index.php wyświetlający listę filmów w bazie. Każdy film powinien być linkiem do pliku film.php, wysyłającym metodą GET (ale nie formularzem!), który film wyświetlić.
  2. Utwórz plik film.php. Plik ten powinien wyświetlić informacje o wybranym filmie (parametr wysłany metodą GET) - tytuł, opis, rating, długość. Następnie należy wyświetlić kategorie, do których film należy (każda kategoria "klikalna" - link do category.php wyświetlającego szczegóły kategorii), oraz obsadę (lista/tabela aktorów, każdy "klikalny" - link do actor.php wyświetlającego szczegóły aktora).
  3. Utwórz plik actor.php. Plik ten powinien wyświetlić szczegóły dotyczące aktora: imię i nazwisko, liczbę filmów, w których grał. Poniżej powinna być przedstawiona lista filmów, w których grał (każdy tytuł "klikalny" jak w p. 2).
  4. Utwórz plik category.php. Plik ten powinien wyświetlać szczegóły kategorii: nazwę, liczbę filmów w tej kategorii i ich listę (każdy tytuł "klikalny" jak w p. 2).

W tym momencie powinno być możliwe przeglądanie listy filmów, szczegółów o filmach, aktorach i kategoriach.

Lista 2: wyświetlanie i edycja szczegółów (cRUd)

  1. Dodaj funkcjonalność wyświetlania liczby egzemplarzy filmu w sklepie oraz liczby wolnych (dostępnych do wypożyczenia) egzemplarzy.
  2. Dodaj funkcjonalność wyświetlania języka i oryginalnego języka filmu (jeśli jest).
  3. Dodaj funkcjonalność edycji filmu: wybór kategorii (kilku!), wybór obsady (aktorów grających w filmie), zmiany szczegółów dotyczących filmu, zmiany języka i języka oryginalnego.
  4. ...

Lista 3: logowanie pracowników do portalu (cRud)

  1. Zapoznaj się z wytycznymi języka PHP dotyczącymi obsługi haseł oraz funkcjami password_hash, password_verify oraz password_needs_rehash.
  2. Ustal, dlaczego nie wolno przechowywać jawnych haseł w bazie danych ani korzystać z funkcji skrótu, np. md5 do przechowywania hasła.
  3. Zapoznaj się z MySQLi Prepared Statements - i przy użyciu tego mechanizmu zaimplementuj wszystkie odpytania do bazy danych w tej liście.
  4. Zapoznaj się z działaniem sesji w PHP.
  5. Utwórz stronę logowania w pliku login.php. Formularz logowania przesyła dane do tego samego pliku metodą bezpieczną - login oraz hasło.
  6. Zaimplementuj obsługę logowania do portalu. Na początku pliku, jeśli przesłano formularz (czyli przesłano pola loginu i hasła oraz nie są one puste), obsłuż logowanie według następującej listy kroków:
    • Pobierz z bazy danych informacje o użytkowniku na podstawie nazwy użytkownika
    • Jeśli pobrano dokładnie 1 rekord, zapisz do zmiennej pobrany hash hasła. Jeśli nie, zapisz do tej zmiennej jakikolwiek napis, inny niż wygenerowany przez password_hash. [podstawowe omijanie ataków czasowych]
    • Zweryfikuj, czy hash hasła może pochodzić z hasła wprowadzonego przez użytkownika.
    • Jeśli weryfikacja jest poprawna, zapisz w sesji potrzebne dane - np. nazwę użytkownika, id użytkownika itp. - i przekieruj użytkownika na stronę główną.
    • Jeśli weryfikacja jest niepoprawna, przekieruj użytkownika na stronę logowania. Możesz także dodać mechanizm wyświetlania błędu logowania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.