Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe PHP

Słowa kluczowe: $_POST w PHP Formularz HTML Funkcja empty() w PHP Walidacja formularza w PHP

if (empty($_POST["name"])) { $nameErr = "Name is required"; } Przedstawiony fragment kodu PHP służy do obsługi

if (empty($_POST["name"])) {
    $nameErr = "Name is required";
}
Przedstawiony fragment kodu PHP służy do obsługi
A. sesji.
B. ciasteczek.
C. bazy danych.
D. formularza.

Pytanie z egzaminu CKE, czerwiec 2021 (arkusz EE.09-SG-21.06).

Ten fragment dotyczy obsługi formularza, dokładniej sprawdzania danych przesłanych metodą POST. W PHP tablica superglobalna $_POST zawiera wartości pól formularza, które użytkownik wysłał z przeglądarki, zwykle przez formularz HTML z atrybutem method="post". Zapis $_POST["name"] oznacza odczytanie pola formularza o nazwie name. Funkcja empty() sprawdza, czy ta wartość jest pusta, czyli np. nie została wpisana, ma pusty ciąg znaków albo wartość traktowaną jako „pusta” przez PHP. Jeśli pole nie zawiera danych, do zmiennej $nameErr zostaje przypisany komunikat "Name is required", który potem można wyświetlić obok formularza jako błąd walidacji. To jest typowy element walidacji po stronie serwera. W praktyce robi się tak przy rejestracji, logowaniu, formularzu kontaktowym czy składaniu zamówienia. Moim zdaniem warto pamiętać, że sama walidacja w HTML lub JavaScript nie wystarcza, bo użytkownik może ją ominąć. Dobrą praktyką jest też użycie trim(), sprawdzanie isset() lub filter_input(), a przy wyświetlaniu danych stosowanie htmlspecialchars(), żeby nie dopuścić do XSS. Taki kod nie obsługuje sesji, ciasteczek ani bazy danych, tylko konkretny etap przetwarzania danych z formularza.
Ten kod łatwo pomylić z innymi mechanizmami PHP, bo używa zmiennych superglobalnych i wygląda jak typowa logika serwerowa. Kluczowe jest jednak to, że pojawia się tutaj $_POST, czyli tablica z danymi przesłanymi z formularza metodą POST. To wskazuje na walidację pola formularza, a nie na przechowywanie stanu użytkownika czy komunikację z bazą danych.

Sesje w PHP obsługuje się zwykle przez session_start() oraz tablicę $_SESSION. Służą one do zapamiętywania informacji między kolejnymi żądaniami, na przykład identyfikatora zalogowanego użytkownika albo zawartości koszyka. W pokazanym fragmencie nie ma żadnego odwołania do $_SESSION, więc nie jest to obsługa sesji. Ciasteczka również działają inaczej: korzysta się z setcookie() i tablicy $_COOKIE, a ich zadaniem jest przechowywanie małych porcji danych po stronie przeglądarki. Samo sprawdzenie pustego pola name nie zapisuje ani nie odczytuje cookie.

Nie jest to też obsługa bazy danych. Przy bazach danych spodziewalibyśmy się połączenia przez PDO albo mysqli, zapytań SQL typu SELECT, INSERT czy UPDATE, ewentualnie przygotowanych instrukcji dla bezpieczeństwa. Tutaj nie ma ani zapytania SQL, ani połączenia z serwerem bazy. Typowy błąd myślowy polega na tym, że skoro formularz często kończy się zapisem do bazy, to każdy kod formularza uznaje się za kod bazodanowy. A to dopiero wcześniejszy etap: sprawdzenie, czy użytkownik w ogóle podał wymagane dane. Z mojego doświadczenia właśnie rozróżnienie między walidacją formularza, sesją, cookie i bazą danych bardzo pomaga potem pisać czytelniejsze aplikacje webowe.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.