Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Creative Coding
Code

Usare Wordpress per lo sviluppo di applicazioni Web :Le Sessioni

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Using WordPress for Web Application Development.
WordPress for Web App Development: User Management
WordPress for Web App Development: Email

Italian (Italiano) translation by Piergiorgio Sansone (you can also view the original English article)

In questa serie stiamo vedendo come sia possibile utilizzare WordPress per costruire un'applicazione web.

Finora, abbiamo parlato di come WordPress sia una base (piuttosto che un framework), della sua architettura, di come abbiamo bisogno di concettualizzarlo quando ci approcciamo a lui specialmente quando veniamo da un'altra lingua, poi abbiamo iniziato a parlare dei componenti che costituiscono un'applicazione web di base.

Come promemoria , abbiamo accennato a :

  • La Gestione degli utenti
  • I Permessi
  • La gestione delle Sessioni
  • Le funzionalità Email
  • La serializzazione dei dati ed il recupero
  • La URL routing (a volte indicato come la riscrittura degli URL o riscrivere le regole o anche solo delle rotte)
  • Il Caching
  • Il Supporto per query pesonalizzate

E a partire dal l'ultimo post, abbiamo trattato sia la gestione degli utenti e le autorizzazioni.

In questo post , ci occuperemo di come incorporare le sessioni all'interno di un'applicazione basata su WordPress; tuttavia, supponiamo che voi - o altri lettori - non abbiata ad oggi familiarità con le sessioni.

Quindi, partiremo da un punto di vista ad alto livello, parleremo della relazione tra sessioni e WordPress, ed anche come iniziare ad incorporare le sessioni nella vostra applicazione WordPress-based.


Una introduzione alle Sessioni

Per alcuni di voi che non hanno familiarità con il concetto di sessione, sarà relativamente semplice capire (ma potrebbe essere difficile da implementare a seconda del framework o della base che si sta utilizzando).

In breve, le sessioni sono il modo di mantenere lo stato di un'applicazione durante il caricamento di una pagina all'altra.

Ma la cosa è questa: Questo può essere implementato in molti modi differenti. In uno scenario, potreste scrivere il dato nel database in una pagine, poi recuperarlo nella successiva.

Questo , non è esattamente il modo più efficace per impostare una sessione specialmente se avete molti utenti attivi, ma consente di mantenere lo stato.

Poi di nuovo, non è di questo che stiamo parlando, quando ci si riferiamo alle sessioni. Invece, ci riferiamo al fatto di  prendere un gruppo di informazioni presistenti in memoria - letteralmente , nella RAM, per tutto il tempo che l'utente è attivo sul sito.

Con il rischio di sembrare piu tecnico di quanto vorrei in questa serie di articoli , ci sono modi in cui le sessioni sono gestite in maniera leggermente diversa cosi che è possibile lasciare il sito , tornare indietro e mantenere ancora attiva la sessione.

Pensiamo a servizi come Twitter ad esempio, dove non devi per forza autenticarti ogni volta che visiti il sito. Indipendentemente da questo , i dettagli di questa implementazione vanno oltre lo scopo di questa serie.

Invece, consideriamo per un momento a cosa dovrebbe essere simile una sessione, a partire da quando un utente approdo alla homepage di un'applicazione, esegue l'accesso, stabilisce una sessione , e poi si disconnette.

Accedere ad un'applicazione Senza Sessione

Quindi, ecco come si presenta una tipica applicazione che poggia su un database, dalla prospettiva di non mantenere nessuna informazione in sessione. invece, tutto è previsto staticamente su pagine e / o è caricato dal database:

A simple example of a database-backed web application.
Un semplice esempio di una applicazione web che poggia su un database.

Abbastanza facile da capire , non è vero?

Fondamentalmente, ogni volta che una pagina viene caricata, o ogni volta che un utente naviga in una nuova pagina, la pagina recupera le informazioni necessarie dal database e poi le presenta all'utente.

Caricamento di un'applicazione con una sessione

Il diagramma precedente rappresenta un'applicazione web che poggia su un database senza l'utilizzo della sessione, cosa mostrerebbe se offrisse una sessione a supporto?

Prima di esminare un diagramma impostiamo alcuni parametri:

  • L'applicazione non manterrà la sessione per gli utenti che non avranno acceduto
  • L'applicazione conserverà alcune informazioni nella sessione una volta che l'utente sarà accreditato.
  • La sessione verrà distrutta quando l'utente verrà disconnesso.

In breve, questo significa che una volta che l'utente è connesso, alcune informazioni verranno visualizzate da informazioni statiche, le informazioni nel database e le informazioni memorizzate nella sessione.

A simple example of a session-enabled web application.
Un semplice esempio di applicazione web a sessione abilitata

Nulla di terribilmente complicato , eh ?

In breve, le informazioni sono caricate nella sessione che le immagazzina nella memoria e le recupera da qui quando le servono. Altre informazioni che non sono in sessione ma sono rilevanti per la pagina che verrà visualizzata, vengono recuperate dai dati.

Permettendo questo ed implementandolo correttamanete, si possono ottene ottime prestazioni e rendere l'esperienza complessiva dell'utente migliore; tuttavia, i dettagli di questo  sono oltre questo particolare articolo.

La cosa più importante fuori da questa particolare sezione è come lavora la sessione e quali sono i  benefici che offre.


La Verità su WordPress e le Sessioni

Per coloro che hanno lavorato alla creazione di applicazioni web in altri ambiti, avrete familiarità con le sessioni e  come funzionano all'interno del contesto degli strumenti dati che state utilizzando.

Infatti , se hai fatto qualsiasi lavoro precedente con PHP, è molto probabile che tu abbia familiarità con Sessioni e come lavorano.

Ma ecco un fatto interessante (almeno, penso che sia interessante!):

Il core dell'applicazione WordPress non utilizza le sessioni.

Infatti, l'unica volta che si avvicina a mantenere qualsiasi tipo di stato è attraverso l'uso di un cookie che è generato quando si accede all'applicazione.


Come implementiamo le sessioni?

Quando si tratta di attuare le sessioni in WordPress, è più una questione di capire come implementare una sessione in PHP e fare in modo che si faccia pulizia , in caso di necessità.

In particolare, questo significa che sai come fare:

  • Iniziare la sessione
  • Memorizzare le informazioni in una sessione
  • Recuperare le informazioni dalla sessione (e come recuperare informazioni dal database se non è in una sessione)
  • Distruggere la sessione

Sembra abbastanza semplice, non è vero? Per la maggior parte lo è , ma come per molte altre cose in sviluppo ci sono cose che dobbiamo considerare.

Iniziare la Sessione

La prima cosa che dovete notare è che le sessioni devono essere avviate. Questo viene fatto richiamando la funzione PHP session_start().

Ci sono due cose da notare circa l'avvio della sessione in PHP.

  1. Avviate una sessione , solo se l'ID sessione non esiste
  2. Dovete avviare una sessione prima che qualsiasi informazione sia inviata al browser

Per fare questo, potete definire una funzione utilizzando un gancio appropriato ma deve essere con sufficiente anticipo nel ciclo di vita della pagina di WordPress.

Ai fini dell'esempio di questo articolo, ho intenzione di avviare  una sessione se un utente è connesso. Se un utente è connesso , salveremo l'ora nella quele si è connesso, altrimenti, faremo altro.

Caso in questione : Nel codice seguente , avvio la sessione durante l'azione di init WordPress',

Ora con la sessione aperta , possiamo iniziare il salvataggio delle informazioni.

Salvataggio informazioni della Sessione

Lavorare con i dati della sessione è molto simile a lavorare con i dati salvati in $_GET, $_POST o anche in un normale array associativo. In breve, PHP offre la raccolta  $_SESSION che ci consente di salvare le informazioni attraverso la coppia chiave/valore.

Riprendendo l'esempio , salveremo l'orario nel quale l'utente si è connesso. Nota,tuttavia, che dobbiamo per prima cosa controllare se il valore è impostato nella collection ; atrimenti, lo sovrascriveremmo ogno singola volta.

Abbastanza semplice, primo, controllo se session_id() è impostato e controllo se l'utente si è autenticato. se si , salvo l'orario.

Ma ora abbiamo bisogno di recuperare effettivamente i dati dalla sessione in altre parti del codice base.

Recupero delle informazioni della sessione

Cosi come memorizzioamo le informazioni in un array, possiamo recuperarle quasi allo stesso modo, ma c'è un avvertenza: dobbiamo assicurarci che il valore sia impostato nell'array e che non sia vuoto.

Possiamo farlo utilizzando una semplice condizione:

Assunto che il valore è presente nella raccolta $_SESSION , allora dovremmo essere a posto.

Distruggi la Sessione

Questo può essere fatto quando ti disconnetti. Utilizzando il codice fornito, si dovrebbe vedere una differenza sul tuo sito in base al fatto che tu sia registrato o meno.

Infine, dal momento che stiamo stabilendo una sessione quando l'utente è connesso, vogliamo distruggere la sessione ogni volta che l'utente si disconnette. Questo è relativamente semplice utilizzando la funzione PHP session_destroy(); altrimenti ci sono alcune sottili sfumature che devono essere comprese.

Direttamente dal manuale PHP

session_destroy() distrugge tutti i dati collegati alla sessione corrente. Non disallocarle nessuna delle variabili globali associate alla sessione, o disattiva il cookie di sessione

In breve, questo vuol dire che il meccanismo per della sessione persistente è distrutto , ma i valori che ha catturato nella sessione della collection

Ma, ancora una volta, come con altri array associativi e collezioni in PHP, è possibile ripristinare i valori (o sovrascrivere). Indipendentemente da ciò, che sta andando oltre la portata di questa particolare serie.

Ci sono alcuni Trucchi!

Cosa sarebbe un articolo sulla programmazione  senza esserci alcun tipo di trucco, giusto?

In primo luogo , abbiamo già stabilito che lo stesso core di WordPress è senza stato. Non solo, ma mantiene anche una funzione che viene utilizzata per ripristinare le variabili globali (si può trovare questa funzione in wp-includes / load.php - basta cercare wp_unregister_GLOBALS).

Quando si cerca il codice sorgente, noterete le seguenti righe:

Questo va disimpostare i valori nella sessione, quindi, in un certo senso, WordPress può effettivamente provare a disinserire la sessione.

In secondo luogo, non tutti i web host supportano sessioni PHP o la raccolta $ _SESSION. A tal fine, è necessario fare in modo che l'ambiente in cui si sta distribuendo il lavoro offra la configurazione e il supporto necessari  per quello che stai rilasciando.

Cos'ha da fare uno sviluppatore?

Quindi, se siete preoccupati di dover gestire un sacco di codice per garantire che le sessioni di lavoro all'interno di WordPress (e non sono cestinati) mentre si fa così, e anche voi non vogliono trattare con i vari ambienti di hosting e le loro varie configurazioni , quindi mi raccomando di verificare il lavoro di Eric Mann WP_Session.

Questo particolare progetto è al di fuori della portata di ciò che stiamo cercando di coprire qui in questo articolo; tuttavia, questo plugin è degno di verificare come fornisce un grande livello di gestione delle sessioni per WordPress senza il troppo carico che abbiamo trattato qui.


Che importanza hanno le sessioni?

In primo luogo, ricordiamo che le sessioni non sono univoche per WordPress. Essi sono una caratteristica di PHP che siamo in grado di implementare nel contesto di WordPress. E a tal fine, siamo in grado di introdurre alcune funzionalità davvero cool in base alle esigenze degli utenti.

Ma questo solleva la questione:hanno importanza le sessioni?

Trovo questa domanda un pò soggettiva.

Se si sta costruendo una applicazione web in cui ogni utente ha bisogno di essere girare intorno al sito con informazioni uniche per la sessione - come, ad esempio, il nome, il cognome, l'ultimo login, e altre cose divertenti - poi, Sì penso di avere un caso per l'utilizzo di una sessione.

Ma se si sta costruendo qualcosa che richiede niente di più che l'autenticazione prima del rendering informazioni da un database, mi chiedo se è poi necessario implementare una sessione.

Tutto questo per dire: Dipende dalla natura del vostro progetto.

A questo punto, siamo pronti a passare al prossimo componente comune di applicazioni web: e-mail.

Piuttosto che fare affidamento su PHP e cablarlo nel ciclo di vita di WordPress, l'API di WordPress rende il lavoro con e-mail relativamente banale, e davvero potente. E con questo, esamineremo nel prossimo articolo.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.