PHP na egzaminie INF.03
INF.03 · 214 pytań w banku
PHP jest technologią często używaną w pytaniach i arkuszach znajdujących się w banku INF.03. Służy tam do odbierania formularzy, pracy z sesją i komunikacji z MySQL. Nie jest jedyną możliwą technologią serwerową, dlatego w konkretnym zadaniu zawsze trzeba kierować się jego treścią i wymaganiami.
❯ przejdź do pytań INF.03
Dane, warunki i tablice
Zmienna zaczyna się od znaku $, a tablica może używać indeksów liczbowych lub kluczy tekstowych. foreach ($produkty as $produkt) przechodzi po kolejnych elementach. Operator . łączy teksty, === porównuje wartość i typ, a funkcje count(), strlen() oraz array_key_exists() odpowiadają na częste pytania o wynik fragmentu programu.
Instrukcja if wybiera gałąź kodu, while powtarza ją dopóki warunek jest prawdziwy, a for sprawdza się przy znanej liczbie powtórzeń. Własna funkcja powinna przyjmować potrzebne dane jako parametry i zwracać wynik przez return, zamiast polegać na wielu zmiennych globalnych.
Formularze i dane użytkownika
Parametr wysłany metodą GET jest dostępny w $_GET, a metodą POST w $_POST. Przed użyciem należy sprawdzić, czy istnieje, na przykład przez isset($_POST["email"]), a następnie zweryfikować jego format i zakres. Walidacja HTML pomaga użytkownikowi, ale serwer musi wykonać własną kontrolę.
Dane wyświetlane ponownie w HTML trzeba kodować odpowiednio do kontekstu, na przykład htmlspecialchars() dla zwykłej treści. Nie należy ufać wartościom z $_GET, $_POST, $_COOKIE ani nagłówków. Filtrowanie wyświetlania i zabezpieczenie zapytania SQL to dwa osobne działania.
MySQL, prepared statements i sesja
Połączenie mysqli można utworzyć przez new mysqli(host, user, haslo, baza). Zapytanie bez danych użytkownika może zostać wykonane metodą query(), a wynik odczytany przez fetch_assoc(). Kod powinien obsłużyć błąd i ustawić właściwe kodowanie połączenia, zwykle utf8mb4.
Wartości pochodzące od użytkownika przekazuje się przez prepared statement. Schemat to $stmt = $db->prepare("SELECT id FROM klient WHERE email = ?"), następnie bind_param("s", $email) i execute(). Wartość jest wtedy przesyłana oddzielnie od składni SQL, co chroni przed wstrzyknięciem SQL w miejscu parametru.
session_start() uruchamia lub wznawia sesję i powinno zostać wywołane przed wysłaniem treści odpowiedzi. Dane w $_SESSION są przechowywane po stronie serwera, a przeglądarka zwykle przesyła identyfikator sesji w ciasteczku. Zwykłe ciasteczko jest przechowywane po stronie klienta i ma określony czas ważności.
Funkcje header() i setcookie() również wymagają, aby nagłówki nie zostały wcześniej wysłane. Przypadkowy tekst lub spacja przed otwarciem PHP może więc spowodować błąd. Po przekierowaniu przez header("Location: ...") warto zakończyć skrypt przez exit, aby dalszy kod nie wykonał się w tle.
Z tym działem powiązano 214 pytań w banku INF.03. Na ekranie Wszystkie pytania wybierz jeden z tagów: php. Możesz wtedy przejrzeć zadania tylko z interesującego Cię obszaru.