Il modo corretto di usare Sessioni (PHP)?

1

Sto creando un sito Web che richiede l'accesso e vorrei sapere quale sia un buon approccio. In questo momento, sto pensando a quanto segue:

  1. L'utente invia nome utente e password al server, dove è convalidato.
  2. Se è valido, quindi session_start (); viene chiamato e session_id () è memorizzato nel mio database, che verrà utilizzato come token di accesso per il resto del recupero dei dati.
  3. Se l'utente si disconnette, that session_id () verrà distrutto nel database.

Vorrei sapere come eliminare session_ids (), se l'utente DIDNT si disconnette e ha appena chiuso il browser.

Vorrei sapere in che modo siti Web famosi come Facebook gestiscono le sessioni.

    
posta harveyslash 17.06.2015 - 06:31
fonte

1 risposta

2

Sei nel posto giusto.

La maggior parte delle applicazioni PHP avrà sessioni attive per tutte le visualizzazioni di pagina, indipendentemente dal fatto che un utente abbia effettuato l'accesso. Avrebbe essenzialmente una sessione start () all'inizio dello script e un save () alla fine. Quella sessione sarebbe esistita per l'intera visita al sito, o più a lungo, a seconda di come il tuo PHP ha impostato la scadenza dei cookie.

Quando un utente invia un modulo di accesso e accede correttamente, è possibile quindi memorizzare le informazioni dell'utente come variabile di sessione. Ad esempio, nel modo più semplice, è possibile memorizzare l'ID utente associato alla sessione:

$_SESSION['user_id'] = 1234;

Quando la sessione viene salvata, quel valore viene memorizzato con la sessione. Le variabili di sessione non vengono inviate al client: vengono memorizzate sul server Web (dove esattamente è memorizzato è configurabile, ma idealmente in un database).

Ora, al caricamento della pagina successiva, puoi controllare il valore di $_SESSION['user_id'] per ottenere l'id utente dell'utente connesso, se presente. Questo perché quando la sessione viene caricata all'inizio dello script, ha accesso alle variabili di sessione assegnate su altre pagine in quella sessione.

Quando un utente si disconnette, si imposta $_SESSION['user_id'] su 0. Al caricamento della pagina successiva, l'utente non è più associato a quella sessione.

Se si desidera che l'utente venga disconnesso quando il browser è chiuso, è necessario impostare la durata del cookie su 0. Se si desidera mantenere la sessione, si desidera impostare la durata del cookie sul numero massimo di secondi che si desidera vuoi che la sessione esista (ad esempio, 60 * 60 * 24 * 30 sarebbe 30 giorni).

Questa è solo una panoramica concettuale. Ci sono alcuni problemi di sicurezza relativi alle sessioni, quindi assicurati di averne conoscenza prima di rendere un sito attivo.

    
risposta data 17.06.2015 - 09:02
fonte

Leggi altre domande sui tag