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: Tworzenie stron WWW Programowanie webowe PHP

W kodzie HTML zdefiniowano formularz, który wysyła dane do pliku formularz.php. Po wciśnięciu przycisku typu submit przeglądarka przechodzi pod adres …/formularz.php?imie=Anna&nazwisko=Kowalska. Który zapis w skrypcie formularz.php odczyta wartość Anna?

A.
$_GET['Anna']
B.
$_GET['imie']
C.
$_POST['imie']
D.
$_COOKIE['imie']
Adres po wysłaniu formularza zawiera fragment ?imie=Anna&nazwisko=Kowalska, czyli dane zostały dopisane do adresu URL jako tzw. query string. W PHP takie dane odczytuje się z tablicy superglobalnej $_GET. Klucz tablicy odpowiada nazwie pola formularza, czyli atrybutowi name, a wartość to tekst wpisany lub wysłany przez użytkownika. Jeśli pole w formularzu miało name='imie', a w adresie jest imie=Anna, to zapis $_GET['imie'] zwróci dokładnie wartość Anna. To jest podstawowy mechanizm obsługi formularzy metodą GET. W praktyce GET stosuje się raczej do danych jawnych, np. filtrowania listy produktów, wyszukiwarki, numeru strony albo parametrów sortowania. Moim zdaniem warto od razu zapamiętać też dobrą praktykę: danych z formularza nie wypisuje się bez kontroli. Przy wyświetlaniu używa się np. htmlspecialchars, a przy pobieraniu można rozważyć filter_input(INPUT_GET, 'imie'). Dzięki temu kod jest czytelniejszy i bezpieczniejszy, szczególnie gdy formularz trafia później do większej aplikacji webowej.
W tym zadaniu kluczowe jest zauważenie, że dane po wysłaniu formularza pojawiły się bezpośrednio w adresie strony, po znaku zapytania. Taki zapis oznacza przesłanie parametrów metodą GET, więc PHP udostępnia je w tablicy superglobalnej $_GET. Częsty błąd polega na tym, że ktoś kojarzy każdy formularz z $_POST, bo POST faktycznie bardzo często jest używany przy logowaniu, rejestracji czy zapisie danych. Jednak metoda nie zależy od tego, że jest formularz, tylko od atrybutu method w HTML oraz od sposobu wysłania żądania HTTP. Gdy parametry widać w URL, $_POST['imie'] nie będzie właściwym miejscem do szukania wartości Anna. Druga pomyłka to mylenie klucza z wartością. W zapisie imie=Anna kluczem jest imie, a Anna jest wartością. Dlatego $_GET['Anna'] szukałoby parametru o nazwie Anna, którego w adresie po prostu nie ma. To niby drobiazg, ale w PHP tablice asocjacyjne działają właśnie na takiej zasadzie: najpierw nazwa pola, potem przypisana wartość. Z kolei $_COOKIE służy do danych zapisanych w ciasteczkach przeglądarki, a nie do zwykłych parametrów formularza przesłanych w adresie. Ciasteczka mają inne przeznaczenie, na przykład utrzymanie identyfikatora sesji lub preferencji użytkownika. Z mojego doświadczenia najlepiej czytać URL dosłownie: jeśli widzisz ?nazwa=wartosc, to w PHP szukasz $_GET['nazwa'].

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.