2010-11-06 12 views
6

Sto creando una funzione di accesso sul mio sito Web e sto pensando di rigenerare l'ID di sessione su ogni pagina per rendere le cose più sicure.PHP "Session_regenerate_id" e Autenticazione degli utenti

Ho letto PHP: s informazioni su regenerate_id ma i post sulla pagina PHP sono molto diversi dalle informazioni fornite su session_regenerate_id.

Qualcuno potrebbe spiegare a queste due domande:

  • Ho bisogno di copiare i dati della sessione vecchi in appena generato uno, o è questo fatto automaticamente? Gli esempi di codice sono molto apprezzati ...

  • Come faccio a verificare se un utente ha già effettuato l'accesso? Cosa devo memorizzare nella variabile di sessione e come? esempi di codice sono molto apprezzate ...

Grazie

risposta

7

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.

Problemi correlati