Aby pobrać dane z formularza HTML, tak aby nie były one widoczne w adresie URL, należy zastosować
A. metodę GET.
B. same kontrolki bez użycia formularza.
C. jedynie funkcje z biblioteki PDO.
D. metodę POST.
Pytanie z egzaminu CKE, styczeń 2023 (arkusz EE.09-SG-23.01).
Metoda POST jest właściwym wyborem, gdy dane z formularza HTML mają zostać przesłane do serwera bez dopisywania ich do adresu URL. W praktyce oznacza to, że zawartość pól formularza trafia do ciała żądania HTTP, a nie do części zapytania po znaku ?. Dlatego w pasku adresu nie zobaczysz np. login=jan&haslo=123, jak często dzieje się przy metodzie GET. To jest podstawowa różnica przy obsłudze formularzy w aplikacjach webowych, szczególnie w PHP, gdzie dane odebrane metodą POST są dostępne zwykle przez tablicę $_POST. Z mojego doświadczenia warto jednak pamiętać o jednej ważnej rzeczy: POST nie szyfruje danych sam z siebie. On tylko nie pokazuje ich w URL. Jeżeli formularz przesyła hasło, e-mail, dane osobowe albo zamówienie, dobrą praktyką branżową jest użycie protokołu HTTPS, walidacja danych po stronie serwera oraz ochrona przed CSRF. POST stosuje się typowo przy logowaniu, rejestracji, dodawaniu komentarzy, wysyłaniu formularza kontaktowego czy zapisywaniu danych do bazy. Moim zdaniem to jedna z tych rzeczy, które trzeba kojarzyć odruchowo przy pracy z formularzami.
Jeżeli wybrana została inna możliwość niż metoda POST, to najpewniej pomyliły się dwa różne sposoby przesyłania danych w protokole HTTP albo rola narzędzi używanych już po stronie serwera. Metoda GET służy do pobierania zasobów i bardzo często dokleja dane formularza do adresu URL jako tzw. query string, czyli fragment po znaku ?. To bywa wygodne przy wyszukiwarkach, filtrowaniu produktów, paginacji albo linkach, które użytkownik może skopiować i wysłać komuś dalej. Nie jest to jednak dobre rozwiązanie, gdy chodzi o ukrycie danych przed paskiem adresu, historią przeglądarki czy logami serwera. Sam fakt, że GET jest prosty, nie znaczy że pasuje do każdego formularza.
Same kontrolki, takie jak pola tekstowe, przyciski radiowe czy checkboxy, nie rozwiązują problemu przesyłania danych. One tylko pozwalają użytkownikowi coś wpisać albo zaznaczyć. Potrzebny jest mechanizm wysłania żądania do serwera, najczęściej formularz z odpowiednio ustawioną metodą albo obsługa JavaScript wykonująca żądanie HTTP. Bez tego dane mogą zostać w przeglądarce i serwer w ogóle ich nie otrzyma.
PDO też nie ma tutaj właściwego zastosowania. Biblioteka PDO w PHP służy do komunikacji z bazą danych, wykonywania zapytań SQL i bezpiecznej pracy z parametrami, na przykład przez prepared statements. To ważne narzędzie, ale działa dopiero wtedy, gdy aplikacja serwerowa już dane otrzyma. Typowy błąd myślowy polega na wrzucaniu do jednego worka formularzy, PHP i baz danych. Formularz przesyła dane przez HTTP, PHP je odbiera, a PDO może je później zapisać w bazie. Każdy etap ma swoją rolę.
Same kontrolki, takie jak pola tekstowe, przyciski radiowe czy checkboxy, nie rozwiązują problemu przesyłania danych. One tylko pozwalają użytkownikowi coś wpisać albo zaznaczyć. Potrzebny jest mechanizm wysłania żądania do serwera, najczęściej formularz z odpowiednio ustawioną metodą albo obsługa JavaScript wykonująca żądanie HTTP. Bez tego dane mogą zostać w przeglądarce i serwer w ogóle ich nie otrzyma.
PDO też nie ma tutaj właściwego zastosowania. Biblioteka PDO w PHP służy do komunikacji z bazą danych, wykonywania zapytań SQL i bezpiecznej pracy z parametrami, na przykład przez prepared statements. To ważne narzędzie, ale działa dopiero wtedy, gdy aplikacja serwerowa już dane otrzyma. Typowy błąd myślowy polega na wrzucaniu do jednego worka formularzy, PHP i baz danych. Formularz przesyła dane przez HTTP, PHP je odbiera, a PDO może je później zapisać w bazie. Każdy etap ma swoją rolę.