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

<form action="plik.php" method="post"> Przedstawiona definicja formularza została zastosowana na stronie internetowej, która wysyła dane do pliku...

<form action="plik.php" method="post">
Przedstawiona definicja formularza została zastosowana na stronie internetowej, która wysyła dane do pliku zapisanego w języku PHP. W której tablicy będą dostępne dane z formularza?
A. $_COOKIE
B. $_POST
C. $_GET
D. $_ACTION

Pytanie z egzaminu CKE, czerwiec 2019 (arkusz EE.09-X-19.06).

W tym formularzu kluczowy jest atrybut method="post". To on decyduje, że dane wpisane w pola formularza zostaną przesłane do skryptu PHP metodą POST, a więc w PHP będą dostępne w superglobalnej tablicy $_POST. Atrybut action="plik.php" wskazuje tylko adres pliku, który ma obsłużyć żądanie, czyli tutaj plik.php. W praktyce wygląda to tak, że jeśli w formularzu jest pole name="login", to po wysłaniu formularza w PHP można odczytać wartość przez $_POST["login"]. Metoda POST jest często stosowana przy logowaniu, rejestracji, formularzach kontaktowych i dodawaniu danych do bazy, bo nie dopisuje wartości formularza do adresu URL. Moim zdaniem to jedna z podstawowych rzeczy w PHP, którą warto dobrze zapamiętać, bo pojawia się praktycznie w każdym projekcie webowym. Dobrą praktyką jest też sprawdzanie, czy dane istnieją, np. przez isset($_POST["login"]), oraz ich walidacja i filtrowanie przed użyciem. Samo POST nie oznacza jeszcze pełnego bezpieczeństwa, ale jest właściwym mechanizmem do przesyłania danych formularza, które nie powinny być widoczne w pasku adresu.
W pokazanej definicji formularza najważniejsze jest rozróżnienie między miejscem wysłania danych a sposobem ich wysłania. Atrybut action="plik.php" mówi tylko, jaki skrypt ma odebrać formularz, natomiast atrybut method="post" określa metodę HTTP. Skoro użyto POST, PHP automatycznie umieszcza przesłane wartości w tablicy superglobalnej $_POST. Częsty błąd polega na tym, że ktoś widzi formularz HTML i od razu myśli o $_GET, bo GET też służy do przekazywania danych do serwera. Jednak $_GET jest używane wtedy, gdy formularz ma method="get" albo gdy parametry są dopisane do adresu URL, na przykład plik.php?id=5. W tej sytuacji tak nie jest. Tablica $_COOKIE również nie pasuje, bo cookies to dane przechowywane po stronie przeglądarki i wysyłane automatycznie z żądaniem, zwykle do zapamiętywania sesji, preferencji użytkownika czy identyfikatora koszyka. Nie są one standardowym miejscem odbioru pól formularza. Z kolei $_ACTION nie jest standardową superglobalną tablicą PHP. To może brzmieć podobnie do atrybutu action z HTML, ale w PHP taka tablica nie istnieje. Z mojego doświadczenia właśnie mieszanie nazw atrybutów HTML z tablicami PHP jest tu najczęstszą pułapką. Warto zapamiętać prostą zasadę: method="get" prowadzi do $_GET, method="post" prowadzi do $_POST, a action tylko wskazuje plik obsługujący żądanie.

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.