Wywołanie session_regenerate_id() na każdej stronie może być trochę przesada, w zależności od konfiguracji. Ta funkcja służy do zapobiegania przechwytywaniu sesji i powinna być używana, ilekroć użytkownik podniesie poziom przywilejów (takich jak logowanie). Zwykle przełączasz się na połączenie https po zalogowaniu się użytkownika, co oznacza, że musisz wywołać tylko session_regenerate_id(), gdy nowy plik cookie zostanie przesłany przez bezpieczne połączenie i nie będzie można go podsłuchać. Jeśli jednak na serwerze nie ma certyfikatu SSL, regeneracja pliku cookie sesji na każdej stronie może być dobrym rozwiązaniem.
Po wywołaniu session_regenerate_id() nie trzeba kopiować danych sesji. To wszystko zostało załatwione przez PHP. Zasadniczo tworzony jest nowy token sesji i plik cookie, dane sesji są kopiowane w magazynie sesji w celu skojarzenia z nowym tokenem, a jeśli przekażemy wartość true jako pojedynczy argument funkcji, stary plik danych sesji na dysku zostanie usunięty.
To, co przechowuje się w sesji, aby wskazać, czy użytkownik jest zalogowany, należy do Ciebie. Często po prostu przechowywać prosty wartość logiczną, aby wskazać, czy jesteś zalogowany, wraz z innymi wartościami posiadających nazwy użytkownika, nazwy itd Następnie sprawdzenie, czy ktoś jest zalogowany jest tak proste, jak to:
<?php
if ($_SESSION['logged_in']){
//User logged in
} else {
//User not logged in
}
?>
HTH.