Blok 7
Rozgrzewka 1: znajdź 8 błędów
Section titled “Rozgrzewka 1: znajdź 8 błędów”Rozgrzewka 1: w plikach strony schroniska jest 8 błędów, każdy z nich pojawił się kiedyś w Waszych pracach. Poprawiasz istniejący kod, nie piszesz od nowa, a przy każdej poprawce dopisujesz komentarz, co było źle. Starter schronisko-starter-7.zip, opis działania strony jest w Zadaniach.
Gdzie szukać
Section titled “Gdzie szukać”Gdzie szukać błędów: zakładka Sieć w narzędziach przeglądarki (F12) pokazuje pliki, które się nie wczytały. Zakładka Elements pokazuje, jak przeglądarka zrozumiała HTML i CSS. Ostrzeżenie PHP podaje numer linii. Treść zadania mówi, jak strona ma działać.
Odsłona: 8 błędów
Section titled “Odsłona: 8 błędów”Odsłona błędów z rozgrzewki 1, omówiona na zajęciach.
Rozgrzewka 2: kod → zadanie
Section titled “Rozgrzewka 2: kod → zadanie”Rozgrzewka 2: masz gotowy, działający kod kasy kina i piszesz do niego treść zadania w stylu arkusza egzaminacyjnego. Treść ma być na tyle dokładna, żeby osoba, która kodu nie widziała, napisała stronę liczącą dokładnie te same kwoty. Plik: kino-7.zip.
Logowanie: o co chodzi
Section titled “Logowanie: o co chodzi”Logowanie w trzech krokach: formularz wysyła login i hasło metodą POST, PHP sprawdza w bazie, czy taki użytkownik istnieje i czy hasło się zgadza, a po udanym logowaniu zapamiętuje użytkownika w sesji, żeby kolejne strony wiedziały, kto jest zalogowany.
Serwer nie pamięta
Section titled “Serwer nie pamięta”Serwer nie pamięta niczego między żądaniami: każde wejście na stronę uruchamia PHP od zera. Zmienna żyje jedno żądanie, baza danych na zawsze i dla wszystkich, a sesja pamięta dane jednej przeglądarki między kolejnymi stronami.
Licznik, który pamięta
Section titled “Licznik, który pamięta”Sesja: session_start() na początku każdej strony, która jej używa, a dane zapisujemy w tablicy $_SESSION, która przeżywa przejście na kolejną stronę. Przeglądarka dostaje ciasteczko PHPSESSID z identyfikatorem sesji, a same dane zostają na serwerze.
Kolejność w pliku, znowu
Section titled “Kolejność w pliku, znowu”session_start() i header() wysyłają nagłówki odpowiedzi, więc muszą stać przed pierwszym znakiem strony, także przed spacją albo pustą linią nad <?php. Inaczej PHP zgłasza „headers already sent”. Kolejność w pliku: sesja, obsługa formularza, przekierowanie, dopiero potem HTML.
Strona tylko dla zalogowanych
Section titled “Strona tylko dla zalogowanych”Strona tylko dla zalogowanych sprawdza na początku, czy w sesji jest zapisany użytkownik. Jeśli nie, przekierowuje na stronę logowania i kończy skrypt przez exit, żeby reszta strony nie została wysłana.
Wylogowanie
Section titled “Wylogowanie”Wylogowanie to osobna strona: session_start(), potem session_destroy() kasuje dane sesji na serwerze, a przekierowanie wraca na logowanie. Sprawdzenie: po wylogowaniu odświeżona strona panelu ma odesłać do logowania.
Przykład
Section titled “Przykład”Przykład na zajęciach: logowanie od formularza, przez sprawdzenie w bazie, do zapamiętania użytkownika w sesji.
Jak starczy czasu: SQL injection
Section titled “Jak starczy czasu: SQL injection”SQL injection: dane z formularza wklejone wprost w treść zapytania mogą zmienić samo zapytanie. Login jan' -- zamyka apostrof i zaczyna komentarz --, więc sprawdzanie hasła znika z zapytania i strona wpuszcza bez hasła.
Oddanie
Section titled “Oddanie”Do oddania folder nazwisko_imie_blok7 z poprawionymi plikami i plik nazwisko_imie_kino_blok7.txt. W następnym bloku rejestracja, robiona samodzielnie, oraz HTML i CSS strony według treści w formie arkusza egzaminacyjnego.