Tutorial di sessione PHP

Tutorial di sessione PHP
Quando è progettato un sito Web di più pagine, non è possibile archiviare le informazioni sullo stato delle pagine senza utilizzare la sessione. Quando l'utente si sposta da una pagina all'altra, è essenziale mantenere le informazioni della pagina precedente per diversi tipi di siti. Ma il protocollo apolido HTTP non è in grado di svolgere questo compito. Uno dei modi per risolvere questo problema è l'utilizzo della funzione di gestione della sessione PHP. Viene utilizzato per conservare tutte le informazioni di ciascun visitatore, ad esempio: quando l'utente ha iniziato a visitare il sito, quali pagine sono state visitate dall'utente, quali attività sono state svolte dall'utente su ogni pagina e quando l'utente ha chiuso il sito, ecc. La gestione della sessione è molto importante per il sito Web basato su e-commerce in cui l'utente deve passare a diverse pagine per acquistare prodotti. Molte direttive della sessione PHP, funzioni integrate e variabili sono utilizzate dallo script PHP per gestire la sessione dell'utente. Il modo di gestire la sessione di un utente utilizzando le direttive di configurazione PHP, la funzione di sessione e le variabili di sessione è stato mostrato in questo tutorial utilizzando più esempi.

Direttive sulla sessione PHP

Tutte le direttive relative alla sessione possono essere impostate utilizzando il php.ini file. Sono menzionate alcune utili direttive PHP relative alla sessione.

Direttiva di sessione scopo
sessione.salva_handler Il valore della direttiva può essere File O mm O sqlite O utente. IL mm viene utilizzato per gestire i dati di sessione utilizzando la memoria. IL sqlite viene utilizzato per gestire i dati utilizzando il database SQLite. IL utente viene utilizzato per gestire i dati utilizzando la funzione definita dall'utente.
session_auto_start Il valore di questa direttiva sarà SU per avviare automaticamente la sessione; Altrimenti, lo sarà Spento.
sessione.nome Viene utilizzato per impostare il nome della sessione e il nome di sessione predefinito è PhpSessid.
sessione.Save_path Viene utilizzato per impostare il percorso in cui verranno archiviate le informazioni sulla sessione. Il valore predefinito di questa direttiva è File.
sessione.hash_function Viene utilizzato per generare un ID sessione hash. 0 è usato MD5 L'algoritmo e 1 viene utilizzato per il Sha algoritmo.
sessione.cache_expire Viene utilizzato per impostare il tempo di scadenza della sessione.
sessione.use_cookies Viene utilizzato per archiviare l'ID sessione impiegando il cookie. 1 viene utilizzato per impiegare i cookie e 0 è ammito per non usare il cookie.
sessione.use_only_cookies È usato per utilizzare il cookie solo per la memorizzazione dell'ID sessione.
sessione.cookie_secure Viene utilizzato per definire se il cookie impiegherà o meno la connessione sicura. È abilitato utilizzando l'on e disabilitato impiegando il Spento valori.
sessione.cookie_lifetime È usato per impostare la vita del biscotto.

Puoi visitare il seguente link per saperne di più sulle direttive della sessione.

https: // www.PHP.net/manuale/en/ini.elenco.PHP

Funzioni di sessione PHP

PHP ha molte funzioni integrate per le attività di gestione delle sessioni. Alcune utili funzioni di gestione delle sessioni sono menzionate di seguito.

Funzione di sessione scopo
session_start () Viene utilizzato per avviare una nuova sessione o riavviare la sessione precedente.
session_id () Viene utilizzato per impostare o ottenere o entrambi impostato e ottenere l'ID sessione.
session_create_id () Viene utilizzato per creare un nuovo ID sessione.
session_name () Viene utilizzato per impostare o ottenere o entrambi impostato e ottenere il nome della sessione corrente.
session_status () Viene utilizzato per ottenere informazioni sullo stato corrente della sessione.
session_reset () Viene utilizzato per ricominciare l'array di sessione.
session_unset () È usato per non definito tutte le variabili di sessione.
session_destroy () Viene utilizzato per distruggere tutti i dati di sessione registrati.
session_encode () Viene utilizzato per codificare i dati della sessione corrente.
session_decode () Viene utilizzato per decodificare i dati della sessione corrente codificati.
session_commit () Viene utilizzato per scrivere i dati della sessione e chiudere la sessione.
session_abort () Viene utilizzato per rimuovere le modifiche all'array di sessione e chiudere la sessione.
session_regenerate_id () Viene utilizzato per generare una nuova sessione per la sessione esistente.
session_cache_limiter () Viene utilizzato per impostare o ottenere il limitatore della cache della sessione corrente.
Session_cache_expire () Viene utilizzato per impostare o ottenere il tempo di scadenza della cache della sessione corrente.

Puoi visitare il seguente link per saperne di più sulle funzioni di sessione integrate di PHP: https: // www.PHP.net/manuale/en/ref.sessione.PHP.

Variabile di sessione PHP

PHP utilizza un array associativo chiamato $ _Session Per la memorizzazione dei dati di sessione. È una variabile "superglobal" a cui è possibile accedere da qualsiasi parte dello script. I valori vengono inizializzati in questa variabile dopo la creazione di una sessione e questa variabile diventa unset dopo aver distrutto la sessione.

Gestione della sessione

La gestione della sessione può essere eseguita dal server Web utilizzando il database o il file. La gestione della sessione può essere eseguita utilizzando il browser dell'utente se il browser supporta i cookie. Ma se i cookie del browser sono disabilitati dall'utente, in questo modo non può essere utilizzato per la gestione delle sessioni. Quindi, utilizzare il server Web è il modo migliore per gestire le sessioni. I passaggi per la gestione della sessione sono indicati di seguito.

  • Il visitatore invia la richiesta al server web per visitare una pagina.
  • Il server Web crea un ID di sessione per il visitatore, memorizza i dati relativi alla sessione per il visitatore e invia la pagina come risposta per il visitatore.
  • Il server Web salva le informazioni sulla sessione relative al visitatore in un file di testo sul server per tracciare la sessione del visitatore su ciascuna pagina visitata dal visitatore durante la sessione.
  • Se il browser utilizzato dal visitatore supporta i cookie, l'ID di sessione sarà archiviato dal cookie Phpsessid per tracciare la sessione del visitatore su ciascuna pagina visitata dal visitatore durante la sessione.

Creare e stampare l'ID sessione

PHP ha due funzioni integrate per creare o riavviare una sessione precedente e quelle menzionate in precedenza in questo tutorial. L'uso session_start () La funzione è stata mostrata qui che viene utilizzata per generare una nuova sessione o re-generare una sessione precedente. Controlla che la sessione esiste per il visitatore e crea una nuova sessione se il visitatore visita la pagina la prima volta. Crea un file PHP con il seguente script che crea una nuova sessione per il visitatore e genera un ID di sessione univoco che è stato stampato da un'altra funzione integrata denominata session_id ().

// Avvia una nuova sessione
session_start ();
// Stampa l'ID sessione
Echo "ID di sessione appena generato:
".session_id (). "";
?>

Produzione
Verrà visualizzato il seguente output dopo aver eseguito lo script sopra dal browser Web. L'ID sessione univoco è stato stampato qui e questo ID rimarrà invariato ogni volta che la pagina viene aggiornata. Se il browser viene chiuso e riaperto per eseguire questo script, verrà stampato un nuovo ID di sessione.

Memorizza e stampa i dati di sessione

La variabile $ _session deve essere inizializzata dopo aver creato l'ID sessione per archiviare i dati della sessione. Crea un file PHP con il seguente script che memorizza il valore della chiave "Nome" della variabile $ _session [] dopo aver avviato una nuova sessione. IL è impostato() La funzione è stata utilizzata nello script per verificare la variabile $ _session ['name'] è impostata o unset. Se il valore non èt per questa variabile, verrà impostato un valore per questa variabile. Se il valore è stato impostato per questa variabile, il valore di questa variabile verrà stampato con la formattazione.

// Avvia una nuova sessione
session_start ();
Se(!ISSET ($ _ sessione ['name']))

eco "

";
eco "

È stata avviata una nuova sessione per l'utente.

";
// Salva i dati della sessione
$ _Session ["name"] = "fahmida yesmin";

altro

eco "

";
// Leggi i dati della sessione
eco '

Bentornato, ' . $ _Session ["nome"] . '.

';

?>

Produzione
Il seguente output apparirà dopo aver eseguito lo script sopra la prima volta. Secondo l'output, è stato generato un nuovo ID di sessione per il visitatore perché l'utente visita la pagina per la prima volta. La variabile $ _session ['name'] è stata inizializzata da un valore stringa e un messaggio è stato stampato per la nuova sessione.

Verrà visualizzato il seguente output se l'utente visita la pagina la prossima volta. Il valore della variabile $ _session ['name'] è stato stampato qui. Il seguente messaggio verrà visualizzato ogni volta fino a quando la sessione non viene distrutta o i dati della sessione vengono rimossi o il browser viene riaperto.

Crea una sessione dopo l'autenticazione dell'utente

Normalmente, la sessione viene creata per l'utente registrato del sito Web dopo aver autenticato l'utente in base ai dati validi per impedire l'accesso non autorizzato all'utente per i dati sensibili. La gestione della sessione è molto importante per il sito Web di e-commerce per tenere traccia dell'attività dell'utente. I dati relativi all'autenticazione dell'utente sono archiviati nel server di database come MySQL, SQLite, SQL Server, PostgreSQL, ecc. Le informazioni dell'utente per l'autenticazione sono state archiviate nel testo qui per semplicità. Crea un file di testo denominato utenti.TXT Con i seguenti contenuti e il file contiene il nome, l'e -mail, il nome utente e la password di tre utenti. Ogni campo è separato da una virgola (,) nel file. L'autenticazione verrà verificata utilizzando il nome utente o l'e -mail e la password.

utenti.TXT

Nome, e -mail, nome utente, password
Nipa chowdhury, [email protected], nipa35, pop890
Mehrab Hossain, [email protected], hossainbd, 674523
Abbas Uddin, [email protected], Abbas90, Hello765

Crea un file HTML chiamato Loginform.html con il seguente script che visualizzerà un modulo di accesso con due campi di testo e un pulsante di invio. Il nome utente o l'e -mail verranno presi nel primo campo di testo e la password verrà presa nel secondo campo di testo. Quando il pulsante di invio premi, la pagina verrà reindirizzata a Sessione3.PHP che verrà creato in seguito.

Loginform.html



Gestione della sessione utilizzando PHP




Login

nome utente o email:


parola d'ordine:







Crea un file PHP con il seguente script che autentica le informazioni di accesso in base ai dati del utenti.TXT file e inizializza i dati della sessione dopo aver autenticato l'utente. IL $ Login La variabile è stata utilizzata per tracciare se le informazioni di accesso inviate sono valide o non valide e il valore iniziale di questa variabile è falso. La prima funzione ISSET () verrà utilizzata per verificare se la variabile $ _Session ['Name'] è impostata o Unset. Se questa variabile non èt, la seconda funzione ISSET () verrà utilizzata per verificare il valore della variabile $ _post ['useremail']. Se i valori di questa variabile sono impostati, i valori del modulo inviati verranno archiviati in due variabili. Se i valori di queste variabili non sono vuoti, il utenti.TXT Il file verrà aperto per la lettura per verificare i valori del modulo inviati corrispondenti con i valori dell'e -mail o del nome utente e la password di qualsiasi utente del file di testo. IL esplodere() La funzione è stata utilizzata per dividere ogni riga del file in base alla virgola (,) e archiviare i valori divisi in quattro variabili. IL ordinare() La funzione è stata utilizzata per rimuovere lo spazio extra da entrambi i lati della variabile. Se viene rilevata una voce corrispondente, la variabile $ _session ['name'] sarà inizializzata con il nome dell'utente corrispondente che è stato recuperato dal file e un messaggio di successo, "Hai effettuato l'accesso con successo."Sarà stampato. Se non viene rilevata alcuna voce corrispondente, il modulo di accesso apparirà di nuovo. Se la pagina viene rivisitata dopo aver creato la sessione, verrà stampato un messaggio di benvenuto con il valore di $ _session ['name'].

Sessione3.PHP

// Definisci la variabile per il controllo dell'accesso valido
$ login = false;
// Inizia una sessione
session_start ();
// controlla se la sessione viene generata o meno
Se(!ISSET ($ _ sessione ['name']))

// Controlla che l'e -mail o il nome utente è impostato o no
if (ISSET ($ _ POST ['userEmail'])

// memorizza il nome utente o e -mail e password dopo il taglio
$ user = trim ($ _ post ['userEmail']);
$ password = trim ($ _ post ['password']);
// controlla se i valori inviati sono vuoti o meno
if ($ utente != "" && $ password != "")

// Leggi il contenuto degli utenti.file txt
$ userFile = File ("Utenti.TXT");
// Leggi la riga del file per riga
foreach ($ userfile come $ dati)

// Leggi i dati del file in quattro variabili dopo la divisione in base alla virgola (,)
elenco ($ name, $ email, $ username, $ pwd) = explode (",", $ data);
// Trim Email, userame e valori di password
$ email = trim ($ email);
$ username = trim ($ username);
$ pwd = trim ($ pwd);
// autentica l'utente in base al nome utente o e -mail e password
if (($ username == $ utente || $ email == $ utente) && ($ pwd == $ password))

// Memorizza i dati di sessione per l'utente valido
$ _Session ['name'] = $ name;
eco "

Hai effettuato l'accesso con successo.

";
$ login = true;
rottura;




// Mostra il modulo di accesso
if ($ login == false) include "loginform.html ";

altro

// Stampa il messaggio di benvenuto per l'utente autenticato di ritorno
eco "

Bentornato, ". $ _Session ['name']."

";

?>

Produzione
Il seguente output apparirà dopo aver eseguito lo script sopra la prima volta. L'utente deve digitare il nome utente o la password validi per l'autenticazione.

L'indirizzo e -mail e la password sono stati forniti nel seguente modulo di accesso. Questi valori saranno abbinati dall'indirizzo e -mail e dalla password di ciascun utente del file.

Verrà visualizzato il seguente output se l'utente preme il pulsante di invio dopo aver fornito l'indirizzo e -mail e la password validi. Lo stesso output apparirà se l'utente fornisce un nome utente valido al posto dell'indirizzo e -mail per l'autenticazione. Il modulo di accesso verrà nuovamente visualizzato se l'utente viene fornito un nome utente o una password non validi.

Se l'utente ricarica nuovamente la stessa pagina dopo l'accesso correttamente, verrà visualizzato il seguente output. Il valore della variabile $ _session ['name'] è stato stampato qui con il messaggio di benvenuto. Questo output rimarrà invariato fino alla scadenza della sessione per l'utente o il browser.

Modifica i dati della sessione

I dati della sessione possono essere modificati dopo aver inizializzato la variabile di sessione. Crea un file PHP con il seguente script per conoscere il modo di modificare la variabile di sessione dopo aver inizializzato la variabile $ _session. La funzione ISSET () è stata utilizzata nello script per verificare se la variabile $ _Session ['Visit'] è impostata o Unset. Se la variabile $ _Session ['Visit'] non è impostata, questa variabile verrà inizializzata su 1. Se la pagina si aggiorna o ricarica nuovamente, il valore di questa variabile verrà incrementato di 1 per ogni aggiornamento. Il valore corrente di questa variabile verrà stampato ogni volta che viene caricata la pagina.

// Avvia la sessione
session_start ();
// Controlla se la variabile di sessione è impostata o non impostata
Se (!ISSET ($ _ sessione ['visita'])
// Inizializza la variabile di sessione
$ _Session ['Visit'] = 1;
altro
// incrementa la variabile di sessione per 1
$ _Session ['Visit'] += 1;
// Stampa il valore corrente della variabile di sessione
eco "

La pagina è visitata per ". $ _Session ['Visit']. "volte

";
?>

Produzione
Il seguente output apparirà dopo aver eseguito lo script sopra per la prima volta. Il valore di $ _session ['visite'] è 1 qui perché quando la pagina viene caricata per la prima volta, questa variabile viene inizializzata su 1.

Verrà visualizzato il seguente output se la pagina viene caricata 3 volte. Il valore di $ _Session ['Visit'] è stato incrementato di 1 ogni volta che la pagina si ricarica.

Elimina i dati della sessione

I dati della sessione possono essere eliminati utilizzando non settato() funzione o la session_unset () funzione di PHP. Crea un file PHP con il seguente script che utilizza il non settato() funzione per eliminare i dati di sessione. La variabile $ _session ['nome utente'] è stata inizializzata con un valore stringa dopo aver avviato la sessione. Successivamente, il valore di questa variabile è stato stampato prima e dopo aver eseguito la funzione Unset () per eliminare i dati di sessione dalla variabile $ _Session ['Nome utente'].

// Avvia la sessione
session_start ();
// Imposta la variabile di sessione
$ _Session ['nome utente'] = 'fahmidabd';
Echo "Dati di sessione dopo il set:
";
// Stampa la variabile di sessione dopo il set
Echo "Nome utente:". $ _Session ['nome utente']."
";
// Unset la variabile di sessione
Unset ($ _ session ['nome utente']);
Echo "Dati di sessione dopo unset:
";
// stampano la variabile di sessione dopo unset
Echo "Nome utente:". $ _Session ['nome utente'];
?>

Produzione
Verrà visualizzato il seguente output dopo aver eseguito lo script sopra. Il valore di $ _session ['nome utente'] è stato stampato prima di eseguire il non settato() funzione e la variabile $ _session ['nome utente'] è diventata vuota dopo l'esecuzione non settato() funzione.

Distruggere la sessione

Le informazioni sulla sessione possono essere rimosse insultando i valori della variabile $ _session che è stata mostrata nell'esempio precedente. PHP ha una funzione integrata denominata session_destroy () Per eliminare completamente tutte le informazioni relative alla sessione. Crea un file PHP con il seguente script che mostra l'uso del session_destroy () funzione. Un modulo con un pulsante di invio è stato utilizzato nello script per distruggere la sessione. Dopo aver avviato una sessione, la funzione ISSET () è stata utilizzata per controllare il “Distruggere la sessioneIl pulsante viene premuto e l'ID sessione non è vuoto. La sessione corrente verrà distrutta chiamando il session_destroy () funzione se l'ID sessione esiste se il "Distruggere la sessioneIl pulsante è premuto dall'utente. Se la pagina viene visitata per la prima volta e il "Distruggere la sessioneIl pulsante non viene premuto, quindi le informazioni sulla sessione verranno archiviate nella variabile $ _session ['name']. Se la pagina viene nuovamente visitata dopo la memorizzazione delle informazioni sulla sessione ma il "Distruggere la sessioneIl pulsante non viene premuto, quindi verrà stampato il messaggio di benvenuto.

// Avvia una nuova sessione
session_start ();
if (ISSET ($ _ POST ['Destroy']) && session_id () != "")

// Distruggi la sessione
session_destroy ();

altro

Se(!ISSET ($ _ sessione ['name']))

eco "

";
eco "

È stata avviata una nuova sessione per l'utente.

";
// Salva i dati della sessione
$ _Session ["name"] = "fahmida yesmin";

altro

eco "

";
// Leggi i dati della sessione
eco '

Bentornato, ' . $ _Session ["nome"] . '.

';







?>

Produzione
Il seguente output apparirà dopo aver eseguito lo script sopra per la prima volta. Se l'utente fa clic su "Distruggere la sessione"Pulsante quindi la sessione verrà distrutta completamente e verrà visualizzata una pagina vuota.

Esempio 5: codifica e decodifica dati di sessione

I dati della sessione possono essere codificati per generare un valore di stringa serializzando i dati e i dati di sessione codificati possono essere convertiti nell'array deserializzando i dati. Crea un file PHP con il seguente script che codifica i dati di sessione utilizzando il session_encode () funzione e decodifica i dati di sessione codificati utilizzando il session_decode () funzione. Secondo il seguente script, le variabili $ _session ["nome"] e $ _session ["e -mail"] saranno inizializzate con due valori dopo aver iniziato la sessione. I valori di queste variabili sono stati codificati usando il session_encode () funzione e stampato in seguito. IL session_unset () La funzione è stata utilizzata per annullare la variabile $ _session. Successivamente, i dati della stringa codificati sono stati convertiti nell'array utilizzando il session_decode () funzione.

// Avvia una nuova sessione
session_start ();
eco "

Viene generata una nuova sessione.

";
// Salva i dati della sessione
$ _Session ["name"] = "fahmida yesmin";
$ _Session ["email"] = "[email protected] ";
Echo "I dati della sessione codificati sono:
";
// codifica i dati della sessione
$ encodedData = session_encode ();
Echo "Dati di sessione codificati:". $ encodeddata."

";
// Unset i dati della sessione
session_unset ();
// decodifica i dati della sessione
session_decode ($ encodedData);
Echo "Dati di sessione dopo la decodifica:";
// Leggi i dati della sessione
eco '

Benvenuto, ' . $ _Session ["nome"] . '.

';
?>

Produzione
Verrà visualizzato il seguente output dopo aver eseguito lo script sopra. Dopo la codifica, i dati della sessione serializzati sono stati stampati nell'output. Secondo l'output, il tubo (|) e il colon (:) i simboli sono stati incorporati con i dati della sessione per creare la stringa codificata e la lunghezza di ciascun valore della stringa è stata inclusa anche nella stringa codificata. Successivamente, la stringa codificata è stata decodificata e il valore della variabile $ _session ["nome"] è stato stampato.

Conclusione

La gestione della sessione è una caratteristica molto importante di qualsiasi applicazione basata sul Web. PHP ha molte direttive di gestione delle sessioni e funzioni di sessione integrate per gestire le attività relative alla sessione. Alcuni usi delle funzioni di sessione comunemente usate sono stati mostrati in questo tutorial utilizzando script PHP. Il compito di alcune funzioni di sessione può essere svolto utilizzando le direttive di sessione particolari. Ad esempio, se il session_auto_start La direttiva è impostata su SU quindi avverrà la sessione automaticamente senza usare il session_start () funzione. L'uso di una tabella di database è un modo efficiente per archiviare i dati di sessione che non sono trattati in questo tutorial. Ma lo scopo della sessione per l'applicazione Web e il modo di implementare la funzione di gestione della sessione utilizzando lo script PHP è stato mostrato in questo tutorial per aiutare i nuovi utenti PHP ad aggiungere questa funzione nella loro applicazione.