
Autor: 26.05.2023
PHP - jak obsługiwać formularze
W PHP mamy dwie podstawowe metody przesyłania danych z formularzy: GET oraz POST. Przeczytaj ten artykuł i zobacz jak się używa tych dwóch metod.
PHP Developer
Zdobądź umiejętności niezbędne do pracy jako PHP Developer. Ta ścieżka kariery sprawi, że staniesz się pełnoprawnym kandydatem na PHP Developera. Ścieżka zawiera dziesiątki zadań, ćwiczeń oraz projektów, które nauczą cię realnych, przydatnych na rynku pracy umiejętności. Dowiedz się więcej
Metoda GET
Zakładamy, że znasz podstawy języka HTML. Przygotowaliśmy formularz, którego zadaniem będzie przesłanie wiadomości message (wartość atrybutu name w znaczniku input) metodą GET (wartość atrybutu method w znaczniku form). Dane zostaną przesłane do page.php (wartość atrybutu action w znaczniku form).
Formularz wygląda następująco:
<html>
<head>
<title>GET</title>
<meta charset="UTF-8">
</head>
<body>
<h3>Sender</h3>
<form action="page.php" method="GET">
Message: <input type=text name="message"/><br/>
<input type=submit value="Send"/>
</form>
</body>
</html>
Powyższy kod wygeneruje następującą stronę:

Wprowadzamy wiadomość LOL i klikamy w przycisk Send. Kliknięcie w przycisk spowoduje wysłanie formularza. Używając metody GET przesyłamy dane, które będą widoczne w pasku URL przeglądarki.

Przesyłanie parametrów odbywa się w takiej formie:
page.php[pytajnik][nazwa parametru]=[wartość]
page.php?message=LOL
GET - odbieranie danych po stronie PHP
Pamiętaj! Nie używaj metody GET do przesyłania haseł lub wrażliwych danych!
Dane po stronie page.php odbieramy używając tak zwanej tablicy asocjacyjnej. Dane odczytamy tak:
$_GET['message']
Poniższy przykład przedstawia sposób odczytu wiadomości:
<html>
<head>
<title>Results</title>
<meta charset="UTF-8">
</head>
<body>
<h3>Receiver</h3>
Message: <b><?php echo $_GET['message']?></b><br>
</body>
</html>
A oto efekt wysłania żądania GET:

Metoda POST
A teraz zajmiemy się kolejną metodą przesyłania danych czyli POST.
Przygotowaliśmy formularz, którego zadaniem będzie przesłanie wiadomości message (wartość atrybutu name w znaczniku input) metodą POST (wartość atrybutu method w znaczniku form). Dane zostaną przesłane do page.php (wartość atrybutu action w znaczniku form).
Formularz wygląda następująco:
<html>
<head>
<title>GET</title>
<meta charset="UTF-8">
</head>
<body>
<h3>Sender</h3>
<form action="page.php" method="POST">
Message: <input type=text name="message"/><br/>
<input type=submit value="Send"/>
</form>
</body>
</html>
Powyższy kod wygeneruje następującą stronę.

POST - odbieranie danych po stronie PHP
Wprowadzamy wiadomość LOL i klikamy w przycisk Send. Kliknięcie w przycisk spowoduje wysłanie formularza. Używając metody POST przesyłamy dane korzystając z nagłówka żądania. Tym razem już nie zobaczymy danych w adresie URL przeglądarki internetowej.

Przesyłanie parametrów odbywa się w takiej formie:

Odbieramy dane po stronie page.php używając tablicy asocjacyjnej. Dane odczytamy przy pomocy tablicy w ten sposób:
$_POST['message']
Poniższy przykład przedstawia sposób odczytu wiadomości:
<html>
<head>
<title>Results</title>
<meta charset="UTF-8">
</head>
<body>
<h3>Receiver</h3>
Message: <b><?php echo $_POST['message']?></b><br>
</body>
</html>
A oto efekt wysłania żądania POST:

Na formularzu atrybut name posiadał nazwę message. Za pomocą tablicy asocjacyjnej $_POST możemy mieć kontrolę nad przesłanym parametrem z formularza. W tym konkretnym przypadku wyświetlamy wartość kryjącą się pod indeksem ‘message’.
Podsumowanie
Mamy dwie podstawowe metody przesyłania danych z formularzy: GET oraz POST. Odbieranie danych nie powinno sprawić większego problemu: to kwestia użycia właściwej zmiennej. Oczywiście w praktyce, dochodzą bardzo ważne kwestie związane z bezpieczeństwem i sprawdzaniem poprawności tych danych. Ale to już temat na osobną dyskusję.
Jeśli chcesz od podstaw poznać język PHP i zdobyć umiejętności potrzebne do pracy na stanowisku Junior PHP Developer, to zacznij naukę ze Ścieżką Kariery. Nauka kończy się egzaminem, który uprawnia cię do posługiwania się Certyfikatem Specjalisty.