Obsługa formularzy PHP

Do zbierania i przesyłania danych pochodzących z formularza służą superglobale zmienne PHP $_GET i $_POST. Z ich pomocą możemy np.

  • przekazywać dane między podstronami danego serwisu,
  • w obrębie tej samej strony
  • wysyłać np. na adres e-mail, do bazy danych.

Budowa prostego formularza

Naukę o formularzach najlepiej zacząć od podstaw (bez żadnych zabezpieczeń, walidacji). Dlatego też na początek warto jest zbudować prosty formularz. Będzie się on składał z dwóch pól, w które będzie można wpisać jakąś wartość i przycisku wysyłania. Pierwsze pole tekstowe to „imię” a drugie „E-mail:”.

Formularz z użyciem metody $_POST

<html>
<body>

<form action="witaj.php" method="post">
Imię: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

Formularz ten działa stosunkowo prosto. Po jego uzupełnieniu i kliknięciu w przycisk „submit” nastąpi przesłanie formularza. Konkretnie zostanie on wysłany pod adres zamieszczony w nagłówku <form action="witaj.php" method="post"> czyli do pliku witaj.php.

Mamy tutaj method="post" dane formularza zostaną więc przesyłane za pomocą metody HTTP POST.

By prawidłowo móc obsługiwać formularz potrzebujemy teraz pliku witaj.php będzie to wyglądało następująco:

<html>
<body>

Witaj <?php echo $_POST["name"]; ?><br>
Twój adres e-mail to: <?php echo $_POST["email"]; ?>

</body>
</html>

Plik ten by działał musi znaleźć się w tym samym katalogu co nasz formularz. Po wypełnieniu formularza i jego przesłaniu powinien wyświetlić się tekst (adekwatny do tego co wpisaliśmy w formularz) np.:

Witaj Aura
Twój adres e-mail to: aurainweb@gmail.com

Formularz z użyciem $_GET

Formularz z użyciem metody $_GET wygląda bardzo podobnie do tego z $_POST. Po prostu w nagłówku formularza w „method” wpisujemy „get” a zamiast „post”.

<html>
<body>

<form action="witaj_get.php" method="get">
Imię: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>

</body>
</html>

Plik do, którego będziemy przekazywali dane musi też ulec zmianie. Tym razem nazwałam go witaj_get.php (dla odróżnienia).

<html>
<body>

Witaj <?php echo $_GET["name"]; ?><br>
Twój adres e-mail to: <?php echo $_GET["email"]; ?>

</body>
</html>

Wynik działania formularza pozornie będzie taki sam w obu metodach. Pozornie bo obie te metody działają w nieco inny sposób, ale o tym w dalszej części. Teraz omówmy jak to właściwie działa, skąd wiadomo które dane pobierać.

Jak to właściwie działa?

Zasada jest stosunkowo prosta! Kiedy budujemy formularz każdemu polu nadajemy unikalną nazwę (w obrębie formularza / sesji). Tą unikalną nazwę nadajemy z pomocą zmiennej name np. name=”name”, name=”email”.

Teraz w zależności od metody przesyłania używamy funkcji $_GET[" "] lub $_POST[" "]. Unikalną nazwę pola umieszczamy pomiędzy cudzysłowami. Teraz trzeba to jeszcze wyświetlić np. z pomocą echo.

<?php echo $_GET["name"]; ?>

Na początku może to być lekko przytłaczające, ale po pewnym czasie to uczucie odchodzi.

Różnice pomiędzy $_GET i $_POST

Metody te są bardzo podobne do siebie w działaniu. Obie mogą przesyłać po więcej niż jedną danę. Mogą zostać użyte nawet do przesyłania tablic (więcej niż jedna informacja/dana w zmiennej). Obie formy mogą przekazywać też zawartość zmiennych pomiędzy podstronami serwisu.

$_GET to tablica zmiennych przekazywana do bieżącego skryptu poprzez parametry adresu URL.

$_POST to tablica zmiennych przekazywana do bieżącego skryptu metodą HTTP POST.

W praktyce oznacza to, że $_GET to metoda przesyłania jawna. Dostęp do danych jest prosty co może wpływać na łatwe ich wykradzenie. Dlatego też programiści wolą używać $_POST. Metoda ta zapewnia większe bezpieczeństwo.

Teraz to brzmi dziwnie, ale przykładowo hasło do twojego konta e-mail, bankowego powinno być prywatne, bezpieczne. Gdybyśmy je przesyłali $_GET – każdy mógł by je zobaczyć, wyświetliło by się bowiem w adresie URL. Takiej sytuacji raczej byśmy nie chcieli. Dlatego też lepiej użyć $_POST, dane nie będą w tedy widoczne.

Kiedy używać metody GET?

Jak już wiemy informacje przesłane z pomocą GET są praktycznie widoczne dla wszystkich bo wyświetlają się w adresie URL strony. Metoda GET ma też limit wysyłanych znaków, który wynosi około 2000.

Przesyłanie w adresie zmiennych ma swoje wady, ale też zalety. Podczas takiego przesyłania tworzą się jak gdyby warianty / różne adresy, które można dodać do zakładek. Dzięki czemu możemy wrócić do nich później.

PAMIĘTAJ – NIE PRZESYŁAMY NIM WRAŻLIWYCH DANYCH TAKICH JAK NP. HASŁA.

Kiedy stosować POST?

Informacje wysyłane z pomocą metody POST są praktycznie niewidoczne dla zwykłych użytkowników. POST nie ma też ograniczeń co do ilości przesyłanych informacji.

Metoda ta umożliwia też przesyłanie różnego typu plików na serwer. Nie nadaje się jednak do tworzenia zakładek, ponieważ w adresie URL nie są przekazywane unikalne dane.

źródło:

https://www.w3schools.com/php/php_forms.asp