Calling session_regenerate_id() su ogni pagina può essere un po 'di eccessivo, a seconda della configurazione. La funzione viene utilizzata per prevenire il dirottamento di sessione e deve essere utilizzata ogni volta che un utente eleva il proprio livello di privilegio (come l'accesso). Di solito si passa a una connessione https una volta che un utente ha effettuato l'accesso, il che significa che è necessario chiamare session_regenerate_id() una volta, poiché il nuovo cookie verrebbe trasferito su una connessione protetta e non sarebbe possibile essere intercettato. Tuttavia, se non si dispone di un certificato SSL sul server, la rigenerazione del cookie di sessione su ogni pagina potrebbe essere una buona opzione.
Quando si chiama session_regenerate_id() non è necessario copiare i dati di sessione. Questo è tutto a posto per te da PHP. Fondamentalmente vengono creati un nuovo token di sessione e un cookie, i dati di sessione vengono copiati nell'archivio di sessione da associare al nuovo token e, se si passa true come singolo argomento alla funzione, viene cancellato il vecchio file di dati di sessione sul disco.
Ciò che si memorizza nella sessione per indicare se un utente ha effettuato l'accesso dipende da voi. Spesso solo memorizzare un semplice valore booleano per indicare se sono registrati, insieme ad altri valori tenendo nomi utente, nome, ecc Poi controllare se qualcuno ha eseguito l'accesso è semplice come questo:
<?php
if ($_SESSION['logged_in']){
//User logged in
} else {
//User not logged in
}
?>
HTH.