Sesja jest sposobem na przechowywanie informacji (w zmiennych) do wykorzystania na wielu stronach serwisu internetowego. W przeciwieństwie do plików cookie informacje nie są przechowywane na komputerze użytkownika.
W sieci internetowej serwer WWW nie wie, kim jesteś ani co robisz, ponieważ adres HTTP nie utrzymuje stanu.
Zmienne sesji rozwiązują ten problem, przechowując informacje o użytkowniku do wykorzystania na wielu podstronach serwisu (np. Nazwa użytkownika, ulubiony kolor itp.). Domyślnie zmienne sesji trwają do momentu zamknięcia przeglądarki przez użytkownika.
Sesja rozpoczyna się od funkcji session_start(), a zmienne sesji są ustawiane za pomocą zmiennej globalnej PHP: $_SESSION. (Tworzymy plik strona_w_sesji1.php)
<?php
// Start sesji umieszczamy na początku dokumentu
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// ustawienie zmiennych w sesji
$_SESSION["ulubionyKolor"] = "niebieski";
$_SESSION["ulubioneZwierze"] = "pies";
echo "Ustawiono zmienne sesyjne.";
?>
</body>
</html>
Zmienne sesji nie są przekazywane indywidualnie do każdej nowej strony, lecz są pobierane z sesji, którą otwieramy na początku każdej strony ( session_start()). Zauważ, że wszystkie wartości zmiennych sesji są przechowywane w globalnej tablicy $_SESSION. (Tworzymy drugi plik o nazwie strona_w_sesji2.php)
<?php
// Każdy plik należący do sesji musi mieć na poczatku funkcję:
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// odczyt zmiennych w sesji
echo "Mój ulubiony kolor to " . $_SESSION["ulubionyKolor"] . ". <br>";
echo "A ulubione zwierzę to " . $_SESSION["ulubioneZwierze"] . ". <br>";
//możemy też zmienić wartość zmiennej w sesji
$_SESSION["ulubionyKolor"] = "czerwony";
echo "Mój ulubiony kolor to " . $_SESSION["ulubionyKolor"] . ". <br>";
?>
</body>
</html>
Aby usunąć wszystkie globalne zmienne sesji i zniszczyć sesję, używamy metod session_unset() i session_destroy()
(Tworzymy trzeci plik o nazwie strona_w_sesji3.php)
<?php
// Każdy plik należący do sesji musi mieć na poczatku funkcję:
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// usunięcie wszystkich zmiennych w sesji
session_unset();
echo "Zmienne sesyjne zostały usuniete <br>";
// zniszczenie sesji
session_destroy();
echo "Sesja została zakończona";
?>
</body>
</html>
Pliki z powyższymi skryptami: Pobierz plik (*.zip)