Opis: Zostaną omówione formularze oraz superglobalne tablice w języku PHP, w tym mechanizmy przesyłania danych za pomocą $_GET, $_POST i $_REQUEST, wykorzystanie tablic $_SERVER, $_SESSION i $_COOKIE oraz podstawowe metody walidacji danych formularza, takie jak isset i empty, umożliwiające bezpieczne przetwarzanie danych wejściowych użytkownika w aplikacjach webowych.
W języku PHP dane przesyłane z formularzy HTML lub przez adres URL są dostępne za pomocą tzw. tablic superglobalnych. Są to specjalne zmienne dostępne w każdym miejscu programu.
Najczęściej wykorzystywane to:
$_GET - służy do odbierania danych przesyłanych w adresie URL,
$_POST - służy do odbierania danych przesyłanych z formularza metodą POST,
$_REQUEST - zawiera dane zarówno z $_GET, jak i $_POST (oraz inne, zależnie od konfiguracji).
Każda z tych tablic działa jak tablica asocjacyjna, gdzie kluczem jest nazwa pola formularza lub parametr w URL.
Dane w metodzie GET są przesyłane bezpośrednio w adresie URL w postaci parametrów. Każdy parametr ma postać:
nazwa=wartośćParametry są oddzielone znakiem &.
Przykład
Formularz HTML (wysyłanie danych metodą GET)
<form method="GET" action="index.php">
<input type="text" name="imie" placeholder="Podaj imię">
<input type="submit" value="Wyślij">
</form>Kod PHP (odbieranie danych)
<?php
if (isset($_GET['imie'])) {
$imie = $_GET['imie'];
echo "Witaj, " . $imie;
}
?>Jak dane trafiają do adresu URL
Po wpisaniu np. Jan i wysłaniu formularza przeglądarka automatycznie tworzy adres:
http://localhost/index.php?imie=JanElementy tego adresu:
index.php - plik, który obsługuje dane,
? - oznacza początek parametrów,
imie=Jan - parametr o nazwie imie i wartości Jan.
Dla większej liczby pól:
<input type="text" name="imie">
<input type="number" name="wiek">adres może wyglądać tak:
http://localhost/index.php?imie=Jan&wiek=20Po wysłaniu formularza:
dane z pól HTML są zamieniane na parametry w URL,
PHP odczytuje je z tablicy $_GET,
klucz tablicy odpowiada nazwie pola formularza (name="imie"),
wartość to dane wpisane przez użytkownika.
Metoda GET jest prosta i wygodna, ale należy pamiętać, że dane są jawne (widoczne w pasku adresu) i mają ograniczoną długość.
Dane są przesyłane z formularza HTML metodą POST i nie są widoczne w adresie URL.
Przykład:
<form method="POST">
<input type="text" name="imie">
<input type="submit" value="Wyślij">
</form><?php
if (isset($_POST['imie'])) {
$imie = $_POST['imie'];
echo "Witaj, " . $imie;
}
?>Wyjaśnienie:
Dane z pola formularza o nazwie imie są przesyłane metodą POST i odczytywane z tablicy $_POST. Funkcja isset() sprawdza, czy dane zostały wysłane.
Tablica $_REQUEST umożliwia dostęp do danych zarówno z $_GET, jak i $_POST.
Przykład:
<?php
$imie = $_REQUEST['imie'];
echo "Witaj, " . $imie;
?>Wyjaśnienie:
Niezależnie od sposobu przesłania danych (GET lub POST), wartość imie zostanie odczytana z tablicy $_REQUEST. Jest to rozwiązanie wygodne, ale mniej precyzyjne, ponieważ nie wskazuje jednoznacznie źródła danych.
$_GET - dane widoczne w URL, łatwe do testowania,
$_POST - dane przesyłane w formularzu, bezpieczniejsze dla użytkownika,
$_REQUEST - łączy różne źródła danych, ale może być mniej czytelne.
Tablice te stanowią podstawę pracy z formularzami i komunikacji między stroną a użytkownikiem w PHP.
W języku PHP istnieją specjalne tablice zwane superglobalnymi, które umożliwiają dostęp do różnych informacji związanych z działaniem aplikacji. W tym temacie szczególnie istotne są:
$_SERVER - zawiera informacje o serwerze i środowisku wykonania,
$_SESSION - umożliwia przechowywanie danych użytkownika między kolejnymi żądaniami (sesja),
$_COOKIE - pozwala zapisywać dane w przeglądarce użytkownika.
Każda z tych tablic pełni inną rolę i jest wykorzystywana w różnych sytuacjach w aplikacjach webowych.
Tablica $_SERVER zawiera informacje o serwerze, zapytaniu HTTP oraz środowisku, w którym działa aplikacja.
Przykład:
<?php
echo "Adres strony: " . $_SERVER['PHP_SELF'] . "<br>";
echo "Metoda żądania: " . $_SERVER['REQUEST_METHOD'];
?>Wynik działania:
Adres strony: /index.php
Metoda żądania: GETWyjaśnienie:
$_SERVER['PHP_SELF'] - zwraca nazwę aktualnie wykonywanego pliku,
$_SERVER['REQUEST_METHOD'] - informuje, czy dane zostały przesłane metodą GET lub POST.
Tablica ta jest przydatna np. do debugowania lub kontroli sposobu przesyłania danych.
Tablica $_SESSION służy do przechowywania danych użytkownika podczas trwania sesji. Dane te są dostępne na różnych stronach, dopóki sesja nie zostanie zakończona.
Przykład:
<?php
session_start();
$_SESSION['imie'] = "Jan";
echo "Zapisano dane w sesji.";
?><?php
session_start();
echo "Witaj, " . $_SESSION['imie'];
?>Wyjaśnienie:
session_start() rozpoczyna sesję (jest wymagane przed użyciem $_SESSION),
dane zapisane w jednej części aplikacji mogą być odczytane w innej,
dane sesji są przechowywane po stronie serwera.
Sesje są często wykorzystywane np. w systemach logowania.
PHP udostępnia dwie ważne funkcje do zarządzania sesją:
session_unset() - usuwa wszystkie zmienne sesyjne,
session_destroy() - kończy sesję (usuwa dane sesji na serwerze).
Przykład:
<?php
session_start();
$_SESSION['imie'] = "Jan";
// usunięcie danych sesji
session_unset();
// zniszczenie sesji
session_destroy();
echo "Sesja została zakończona.";
?>Wyjaśnienie:
session_unset() usuwa wszystkie zmienne zapisane w sesji,
session_destroy() całkowicie kończy sesję,
po wykonaniu tych operacji dane użytkownika nie są już dostępne.
Tablica $_COOKIE umożliwia dostęp do danych zapisanych w przeglądarce użytkownika w postaci tzw. ciasteczek (cookies).
Składnia funkcji setcookie()
setcookie(nazwa, wartość, wygaśnięcie, ścieżka, domena, zabezpieczenie, tylko_http);Parametry:
nazwa - nazwa ciasteczka,
wartość - przechowywana wartość,
wygaśnięcie - czas wygaśnięcia (timestamp) (obecny czas plus ilośc sekund) ,
ścieżka - dostępność w katalogach (np. /),
domena - domena, dla której cookie jest dostępne,
zabezpieczenie (secure) - tylko przez HTTPS (true/false),
tylko_http (httponly) - dostępne tylko przez HTTP (bez JavaScript).
Przykład z pełną składnią:
<?php
setcookie("imie", "Anna", time() + 3600, "/", "", false, true);
echo "Cookie zostało ustawione.";
?>Wyjaśnienie:
Ciasteczko "imie" zostaje zapisane na 1 godzinę, dostępne w całej aplikacji (/) i zabezpieczone przed dostępem przez JavaScript (httponly = true).
Aby usunąć cookie, należy ustawić datę wygaśnięcia w przeszłości:
<?php
setcookie("imie", "", time() - 3600);
echo "Cookie zostało usunięte.";
?>Wyjaśnienie:
Przeglądarka usuwa ciasteczko, ponieważ jego czas ważności już minął.
<?php
if (isset($_COOKIE['imie'])) {
echo "Witaj, " . $_COOKIE['imie'];
} else {
echo "Brak zapisanych danych.";
}
?>$_SERVER - informacje o serwerze i zapytaniu,
$_SESSION - dane przechowywane po stronie serwera między stronami,
session_start() - rozpoczęcie sesji
session_unset() - usunięcie zmiennych
session_destroy() - zakończenie sesji
$_COOKIE - dane zapisywane w przeglądarce użytkownika.
setcookie() - tworzenie ciasteczka (z wieloma parametrami)
usuwanie przez ustawienie czasu w przeszłości
sprawdzanie przez isset()
możliwość weryfikacji, czy cookies są włączone
$_SESSION
Stosuj, gdy:
przechowujesz dane wrażliwe (np. identyfikator użytkownika po zalogowaniu),
dane mają być dostępne tylko podczas jednej sesji użytkownika,
zależy Ci na większym bezpieczeństwie (dane nie są po stronie klienta),
pracujesz z systemem logowania lub autoryzacji.
Przykłady użycia:
logowanie użytkownika,
koszyk zakupowy (tymczasowy),
dane sesyjne między podstronami.
$_COOKIE
Stosuj, gdy:
chcesz zapamiętać dane na dłużej (nawet po zamknięciu przeglądarki),
dane nie są wrażliwe,
potrzebujesz przechowywać preferencje użytkownika,
chcesz rozpoznać użytkownika przy kolejnej wizycie.
Przykłady użycia:
zapamiętanie języka strony,
tryb ciemny/jasny,
"zapamiętaj mnie" (częściowo, zwykle z tokenem).
Walidacja danych z formularza polega na sprawdzeniu poprawności i obecności danych przesłanych przez użytkownika, zanim zostaną one wykorzystane w programie. Jest to bardzo ważny etap, który pozwala uniknąć błędów oraz zwiększa bezpieczeństwo aplikacji.
W PHP do podstawowej walidacji często wykorzystuje się funkcje:
isset() - sprawdza, czy zmienna istnieje i ma przypisaną wartość,
empty() - sprawdza, czy zmienna jest pusta (np. "", 0, null, false).
Funkcja isset() zwraca true, jeśli zmienna istnieje i nie ma wartości null.
Przykład:
<form method="POST">
<input type="text" name="imie">
<input type="submit" value="Wyślij">
</form><?php
if (isset($_POST['imie'])) {
echo "Formularz został wysłany.";
}
?>Wyjaśnienie:
Funkcja isset() sprawdza, czy pole imie zostało przesłane w formularzu. Dzięki temu wiemy, że użytkownik kliknął przycisk "Wyślij" i dane są dostępne.
Funkcja empty() sprawdza, czy zmienna jest pusta.
Przykład:
<?php
if (empty($_POST['imie'])) {
echo "Pole imię jest wymagane.";
}
?>Wyjaśnienie:
Jeśli użytkownik nie wpisze żadnej wartości, empty() zwróci true i wyświetlony zostanie komunikat o błędzie.
Najczęściej obie funkcje stosuje się razem.
Przykład:
<form method="POST">
<input type="text" name="imie">
<input type="submit" value="Wyślij">
</form><?php
if (isset($_POST['imie'])) {
if (empty($_POST['imie'])) {
echo "Pole imię jest wymagane.";
} else {
echo "Witaj, " . $_POST['imie'];
}
}
?>Wyjaśnienie:
isset() sprawdza, czy formularz został wysłany,
empty() sprawdza, czy użytkownik wprowadził dane,
w zależności od wyniku wyświetlany jest komunikat lub dane użytkownika.
Utwórz formularz przesyłający imię metodą GET i wyświetl je przy użyciu $_GET oraz $_REQUEST.
Kroki:
utwórz formularz HTML z polem imie i metodą GET,
po wysłaniu formularza odczytaj dane z $_GET['imie'],
wyświetl imię na stronie,
odczytaj tę samą wartość z $_REQUEST['imie'],
porównaj wyniki (powinny być takie same).
Utwórz formularz przesyłający wiek metodą POST i wyświetl go przy użyciu $_POST oraz $_REQUEST.
Kroki:
utwórz formularz HTML z polem wiek i metodą POST,
po wysłaniu formularza odczytaj dane z $_POST['wiek'],
wyświetl wiek na stronie,
odczytaj wartość z $_REQUEST['wiek'],
sprawdź, czy wynik jest identyczny.
Wyświetl podstawowe informacje o aktualnym żądaniu i środowisku serwera.
Kroki:
użyj $_SERVER['PHP_SELF'], aby wyświetlić nazwę pliku,
użyj $_SERVER['REQUEST_METHOD'], aby wyświetlić metodę żądania,
opcjonalnie wyświetl $_SERVER['SERVER_NAME'],
przedstaw dane w czytelnej formie (w HTML).
Utwórz prosty mechanizm zapamiętywania imienia użytkownika przy użyciu sesji.
Kroki:
rozpocznij sesję (session_start()),
utwórz formularz do wpisania imienia,
zapisz dane do $_SESSION['imie'],
wyświetl zapisane imię na stronie,
dodaj przycisk lub link do usunięcia sesji (session_destroy()).
Zapisz imię użytkownika w ciasteczku i wyświetl je po odświeżeniu strony.
Kroki:
utwórz formularz do wpisania imienia,
użyj setcookie() do zapisania wartości (np. na 1 godzinę),
po odświeżeniu strony odczytaj dane z $_COOKIE,
wyświetl komunikat powitalny,
dodaj opcję usunięcia ciasteczka.
Utwórz formularz z polem "login" i sprawdź poprawność wprowadzonych danych.
Kroki:
utwórz formularz HTML z polem login,
sprawdź, czy formularz został wysłany (isset()),
sprawdź, czy pole nie jest puste (empty()),
jeśli puste - wyświetl komunikat: "Pole wymagane",
jeśli uzupełnione - wyświetl: "Witaj, [login]".
© 2026 Piskorowski Jakub. All rights reserved.