Sesje w PHP pozwalają na przechowywanie danych o użytkowniku na serwerze przez cały czas trwania jego aktywności na stronie.
Przechowywane informacje są dostępne między różnymi stronami w tej samej przeglądarce.
Są kluczowe, gdy chcemy "śledzić" użytkownika, np. zapamiętując, że jest zalogowany, lub przechowując zawartość koszyka zakupów.
W 3. linijce ustawiamy wartość sesji. To co jest w 4. to proste przywitanie, ale też przykład jak można uzyskać dostęp do tych zapisanych wartości.
Cookies to małe pliki przechowywane na urządzeniu użytkownika, służące do przechowywania danych między wizytami na stronie.
Mogą być używane do zapamiętywania stanu logowania, preferencji użytkownika itp.
Aby korzystać z sesji, należy zawsze wywołać session_start() na początku każdego skryptu, który będzie korzystał z danych sesji.
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
// Sprawdzenie danych użytkownika (prosty przykład)
if ($username == 'admin' && $password == '1234') {
$_SESSION['username'] = $username;
echo 'Zalogowano';
} else {
echo 'Niepoprawne dane logowania';
}
}
Ten prosty kod możecie skopiować do edytora i wypróbować u siebie. Jest to uproszczone logowanie do strony po stronie sesji.
Nie zapomnijcie o odpowiednim formularzu w HTML!
Regeneracja identyfikatora sesji:Po zalogowaniu użytkownika, warto zregenerować identyfikator sesji, aby uniemożliwić przejęcie sesji przez atakującego.
Zastosowanie HttpOnly:Ustawiając ciasteczka sesji jako dostępne tylko dla HTTP (z flagą HttpOnly), ograniczamy możliwość ich odczytania przez JavaScript.
HttpOnly to flaga ciasteczka, która oznacza, że ciasteczko może być używane wyłącznie przez serwer i nie może być odczytane ani modyfikowane przez skrypty JavaScript działające na stronie.
Oznacza to, że nawet jeśli strona internetowa zostanie zaatakowana przy użyciu ataku XSS (gdzie złośliwy kod JavaScript zostaje wstrzyknięty na stronę), atakujący nie będzie mógł odczytać ciasteczek oznaczonych jako HttpOnly.
W PHP można ustawić ciasteczko z flagą HttpOnly za pomocą funkcji setcookie(), dodając odpowiedni parametr.
Parametry funkcji:
'session_id' – nazwa ciasteczka.
session_id() – wartość ciasteczka, w tym przypadku identyfikator sesji.
time() + 3600 – czas ważności ciasteczka (w tym przypadku 1 godzina).
"/" – ścieżka (cała domena).
"" – domena (pusta, oznacza bieżącą domenę).
false – ciasteczko nie jest przesyłane tylko w połączeniach HTTPS.
true – flaga HttpOnly, czyli ciasteczko jest dostępne tylko dla protokołu HTTP/HTTPS i nie może być odczytane przez JavaScript.
W celu pełnego wylogowania użytkownika i zabezpieczenia jego danych, po zakończeniu pracy sesji należy ją zniszczyć.