session_regenerate_id

funkcja

Generuje nowe ID sesji. Wywołaj po pomyślnym zalogowaniu, żeby zapobiec atakowi session fixation. Z argumentem true usuwa też stary plik sesji.

session_regenerate_id(bool $delete_old_session = false): bool

session_regenerate_id zastępuje bieżące ID sesji nowym, losowym identyfikatorem — bez utraty danych w $_SESSION. To kluczowa ochrona przed atakiem session fixation: napastnik, który znał stare ID, po regeneracji traci dostęp do sesji. Zawsze wywołuj z argumentem true, żeby stary plik sesji został natychmiast usunięty z serwera. Zwraca true w przypadku sukcesu.

<?php
declare(strict_types=1);

session_start();

// ... weryfikacja hasła przez password_verify() ...

// Hasło poprawne — regeneruj ID sesji przed zapisem danych
session_regenerate_id(true); // true = usuń stary plik sesji

$_SESSION['user_id']   = $uzytkownik['id'];
$_SESSION['user_name'] = $uzytkownik['login'];
// wynik: nowe PHPSESSID — stare ID sesji przestaje istnieć
📘 Naucz się w lekcji →