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)
- 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ć.
- 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).
- 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).
- 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)
- Dodaj funkcjonalność wyświetlania liczby egzemplarzy filmu w sklepie oraz liczby wolnych (dostępnych do wypożyczenia) egzemplarzy.
- Dodaj funkcjonalność wyświetlania języka i oryginalnego języka filmu (jeśli jest).
- 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.
- ...
Lista 3: logowanie pracowników do portalu (cRud)
- Zapoznaj się z wytycznymi języka PHP dotyczącymi obsługi haseł oraz funkcjami password_hash, password_verify oraz password_needs_rehash.
- Ustal, dlaczego nie wolno przechowywać jawnych haseł w bazie danych ani korzystać z funkcji skrótu, np. md5 do przechowywania hasła.
- Zapoznaj się z MySQLi Prepared Statements - i przy użyciu tego mechanizmu zaimplementuj wszystkie odpytania do bazy danych w tej liście.
- Zapoznaj się z działaniem sesji w PHP.
- Utwórz stronę logowania w pliku login.php. Formularz logowania przesyła dane do tego samego pliku metodą bezpieczną - login oraz hasło.
- 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.