Obsługa formularzy PHP
Superglobale PHP $_GET i $_POST są używane do zbierania danych formularzy.
PHP — prosty formularz HTML
Poniższy przykład przedstawia prosty formularz HTML z dwoma polami wejściowymi i przyciskiem przesyłania:
Przykład
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
Gdy użytkownik wypełni powyższy formularz i kliknie przycisk Prześlij, dane formularza są wysyłane do przetworzenia do pliku PHP o nazwie „welcome.php”. Dane formularza przesyłane są metodą HTTP POST.
Aby wyświetlić przesłane dane, możesz po prostu wyświetlić wszystkie zmienne. Plik „welcome.php” wygląda tak:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
Dane wyjściowe mogą wyglądać mniej więcej tak:
Welcome John
Your email address is [email protected]
Ten sam wynik można było również osiągnąć stosując metodę HTTP GET:
Przykład
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
a "welcome_get.php" wygląda tak:
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
Powyższy kod jest dość prosty. Jednak najważniejszej rzeczy brakuje. Musisz zweryfikować dane formularza, aby chronić swój skrypt przed złośliwym kodem.
Pomyśl o BEZPIECZEŃSTWIE podczas przetwarzania formularzy PHP!
Ta strona nie zawiera żadnej walidacji formularzy, pokazuje tylko, jak możesz wysyłać i pobierać dane formularzy.
Jednak kolejne strony pokażą, jak przetwarzać formularze PHP z myślą o bezpieczeństwie! Właściwa weryfikacja danych formularza jest ważna, aby chronić formularz przed hakerami i spamerami!
POBIERZ vs. POST
Zarówno GET, jak i POST tworzą tablicę (np. tablica( klucz1 => wartość1, klucz2 => wartość2, klucz3 => wartość3, ...)). Ta tablica zawiera pary klucz/wartość, gdzie klucze są nazwami kontrolek formularza, a wartości są danymi wejściowymi od użytkownika.
Zarówno GET, jak i POST są traktowane jako $_GET i $_POST. Są to superglobale, co oznacza, że są zawsze dostępne, niezależnie od zakresu — i możesz uzyskać do nich dostęp z dowolnej funkcji, klasy lub pliku bez konieczności robienia czegokolwiek specjalnego.
$_GET to tablica zmiennych przekazywana do bieżącego skryptu przez parametry adresu URL.
$_POST to tablica zmiennych przekazywanych do bieżącego skryptu za pomocą metody HTTP POST.
Kiedy używać GET?
Informacje przesłane z formularza metodą GET są widoczne dla wszystkich (wszystkie nazwy zmiennych i wartości wyświetlane są w adresie URL). GET ma również ograniczenia dotyczące ilości informacji do wysłania. Ograniczenie to około 2000 znaków. Ponieważ jednak zmienne są wyświetlane w adresie URL, istnieje możliwość dodania strony do zakładek. W niektórych przypadkach może to być przydatne.
GET może być używany do przesyłania niewrażliwych danych.
Uwaga: GET NIGDY nie powinien być używany do wysyłania haseł lub innych poufnych informacji!
Kiedy używać POST?
Informacje wysyłane z formularza metodą POST są niewidoczne dla innych (wszystkie nazwy/wartości są osadzone w treści żądania HTTP) i nie ma ograniczeń co do ilości informacji do wysłania.
Ponadto POST obsługuje zaawansowane funkcje, takie jak obsługa wieloczęściowego wejścia binarnego podczas przesyłania plików na serwer.
Jednak ponieważ zmienne nie są wyświetlane w adresie URL, nie można dodać strony do zakładek.
Deweloperzy wolą POST do wysyłania danych formularzy.
Następnie zobaczmy, jak możemy przetwarzać formularze PHP w bezpieczny sposób!