2010-07-23 15 views
9

ok im un newbie sessioni lascia immaginare che abbiamo un po 'del sito Entrata,Cosa sono usati session_id, session_regenerate_id e session_name?

heres una logica

  1. login
  2. se la password giusta = Usa $ _SESSION [isaloginuser] = 1
  3. controllare la sessione per vedere se i menu con $ _SESSION [isaloginuser] = 1
  4. visualizzare i menu
  5. l'utente vuole fine sessione
  6. sessione unset
  7. distruggere il sistema di sessione

quello che si usa

session_register 
session_destroy 
session_unset 
session_start 

Da dove viene il session_id & la session_regenerate o session_name va in? al sito php si dice

session_id() viene utilizzato per ottenere o impostare il id di sessione per la sessione corrente.

io ancora non ce l'ho, perché ne abbiamo bisogno comunque? nell'ambiente reale cosa fa?

+1

non solo la password, ma fare in modo che il nome utente è anche giusto :) – Sarfraz

+1

utilizzare sempre 'session_regenerate_id' quando il livello di privilegio cambia – knittl

+0

[Questo link] (http://stackoverflow.com/questions/18262620/what-additional- value-does-session-destroy-bring-when-i-am-using-session-regener) ha due fantastiche risposte sulle sessioni. – CoR

risposta

14

No, non è necessario usarli. In generale, tutto ciò che serve è

  • session_start per avviare la gestione delle sessioni, e
  • session_destroy di distruggere i dati della sessione memorizzati (questo non modifica $_SESSION), e
  • session_unset per ripristinare la variabile $_SESSION (ma puoi anche fare $_SESSION = array()).

session_id e session_name sono per ottenere e impostare l'ID di sessione e la sessione nome ID corrente (di default è PHPSESSID). session_regenerate_id può essere utilizzato per rigenerare/modificare l'ID di sessione della sessione corrente. Ciò potrebbe essere utile se, ad esempio, si desidera aggiornare l'ID sessione ogni 10 minuti o dopo aver modificato lo stato di autenticità di un utente associato a una sessione.

+2

ok, ma cosa fa nel mondo reale? stai usandolo su uno dei tuoi progetti? per cosa ? –

+0

@Adam Ramadhan: cosa fa cosa nel mondo reale? – Gumbo

+0

session_id, nome e rigenerazione. –

2

Gli ID di sessione sono l'identificativo della sessione. Il modo in cui un server memorizza i dati relativi a un client si trova in un cookie. Questo cookie viene inviato con ogni richiesta HTTP al server da quel client. PHP imposta un cookie come token di stringa casuale. Questo token identifica il client e lo collega a un insieme di coppie chiave-valore. L'idea di una variabile di sessione è che i cookie possono essere facilmente manomessi. Gli ID di sessione, tuttavia, sono stringhe casuali, sono difficili da duplicare e quindi aggiungono sicurezza.

3

session_register() è ammortizzato in 5.3, suggerirei di non utilizzare.Invece basta usare

$_SESSION['varname'] = "value"; 

SESSION_ID solo utilizzato se si vuole ottenere l'id di sessione per la memorizzazione in un database, questo non è "necessaria" per l'uso. session_name, imposta solo un nome, non è necessario. Il rigenerato è se vuoi fare un nuovo id, anche questo non è necessario a meno che l'applicazione ne abbia bisogno, per una sessione di login, dubito fortemente che lo userai.

Gli altri, spero che tu capisca cosa fanno (vale a dire unset/destroy). Ma spero che dia qualche intuizione.

2

Di solito uso session_id() durante la creazione di cestini di acquisto in modo da poter tenere traccia di ciò che l'utente ha aggiunto, quindi una volta ricevuta una risposta dal gateway di pagamento che il pagamento ha avuto esito positivo, ho quindi session_regenerate() in modo che quando sono di nuovo sul mio sito web i loro cestini precedenti non sono visibili e per me è come un nuovo utente ha "inserito" il negozio.

+2

'$ _SESSION ['cart'] = null' non funzionerebbe? –

10

session_regenerate_id() viene utilizzato per impedire il fissaggio della sessione.

Per impostazione di sessione si intende quanto segue: Si visita un sito Web e si esamina l'ID della sessione. Quindi manipoli un altro utente per visitare il sito usando l'ID di sessione e accedendo. Ora hai effettuato l'accesso come tale utente e hai i suoi privilegi, perché stai entrambi utilizzando la stessa sessione.

Per impedire ciò, fornire all'utente un nuovo ID di sessione utilizzando session_regenerate_id() all'accesso corretto. Ora solo lui ha l'ID di sessione e il vecchio ID sessione non è più valido.

+0

dovremmo aggiungerlo all'accesso? o in uscita? –

+1

È importante farlo al login. Non penso sia necessario farlo al logout, anche se non è un'operazione costosa. – Hammerite

+1

@Hammerite Un buon esempio, ma ogni volta che un utente aggiorna la pagina, 'session_regenerate_id()' sta generando nuovi gruppi di sessioni, quindi questo non influisce sulla sessione in alcun modo? – samayo

Problemi correlati