Programmazione web: lato server e lato client

Programmazione web.

Nella terminologia di PHP e di programmazione con altri linguaggi di scripting si può sentir citare le espressioni “lato client” e “lato server“. Per chi non è esperto della materia, tali definizioni possono suonare un po’ misteriose. Proviamo a chiarire questi concetti: vediamo come funziona, in maniera semplificata, la richiesta di una pagina Web. L’utente apre il suo browser e digita un indirizzo Internet, ad esempio www.SITO1.it/pagina1.html . A questo punto il browser si collega al server di www.SITO1.it e gli chiede la pagina pagina1.html. O nel caso in cui si inserisce solo l’url vengono richiamate delle pagine di default (index.html, default.html,  etc.). Tale pagina contiene  codice HTML : il server la prende e la spedisce al browser, così com’è (insieme ad eventuali file allegati, ad esempio immagini). Il nostro utente quindi avrà la possibilità di visualizzare la pagina.

Pagina Php

Supponiamo ora che l’utente richieda invece la pagina pagina2.php : questa, contrariamente a quella di prima, non contiene solo codice HTML, ma anche PHP. In questo caso il server, prima di spedire la pagina, esegue il codice PHP, che in genere produce altro codice HTML: ad esempio, PHP potrebbe controllare che giorno è e generare un messaggio di questo tipo. “Buon Giorno, 0ggi è il 16/08/2012! ” oppure ogni altro messaggio. Dopo l’esecuzione, la pagina non conterrà più codice PHP, ma solo HTML. A questo punto è pronta per essere spedita al browser. Ovviamente, il file che non contiene più codice PHP non è quello “originale”, ma la “copia” che viene spedita al browser. L’originale rimane disponibile per le prossime richieste. Una sorta di modello quindi l’utente vede solo il codice HTML, e non ha accesso al codice PHP che ha generato la pagina.

Confronto con JavaScript

Per una migliore comprensione, confrontiamo PHP con un altro linguaggio di scripting molto diffuso sul Web, cioè JavaScript. Che di solito viene usato come linguaggio “lato client“: JavaScript infatti viene eseguito non dal server, ma dal browser dell’utente (il client, appunto). JavaScript ci consente di eseguire programmazione che riguarda il sistema dell’utente. Come ad esempio aprire una nuova finestra del browser, o controllare la compilazione di un modulo segnalando eventuali errori prima che i dati vengano spediti al server. Ci permette anche di avere un’interazione con l’utente: ad esempio, possiamo far sì che quando il mouse passa su una determinata immagine, tale immagine si modifichi, o si compia un’azione.

Sul sistema dell’utente

Per svolgere tutti questi compiti, JavaScript deve essere eseguito sul sistema dell’utente: per questo il codice JavaScript viene spedito al browser insieme al codice HTML. Quindi l’utente ha la possibilità di visualizzarlo, contrariamente a ciò che accade con PHP. Abbiamo citato alcune utili funzioni svolte da JavaScript sul browser dell’utente: PHP, essendo eseguito sul server, non è in grado di svolgere direttamente queste funzioni. Ma attenzione: questo non significa che non sia in grado ugualmente di controllarle! Infatti PHP svolge principalmente la funzione di ‘creare’ il codice della pagina che viene spedita all’utente: di conseguenza, così come può creare codice HTML, allo stesso modo può creare codice JavaScript. Questo significa che PHP ci può permettere, ad esempio, di decidere se ad un utente dobbiamo spedire il codice JavaScript che apre una nuova finestra, oppure no.

Estensioni

In pratica, quindi, lavorando in programmazione sul lato server abbiamo il controllo anche del lato client. Rimane un ultimo dettaglio da svelare: come fa il server a sapere quando una pagina contiene codice PHP che deve essere eseguito prima dell’invio al browser? Il controllo si basa sull’estensione delle pagine richieste.
Nell’esempio che abbiamo visto prima, pagina1 aveva l’estensione .html, mentre pagina2 aveva l’estensione .php . Sulla base di questo, il server sa che nel secondo caso deve eseguire PHP, mentre nel primo può spedire il file così com’è. In realtà il server deve essere istruito per poter fare ciò: generalmente gli si dice di eseguire PHP per le pagine che hanno estensione .php. È possibile comunque assegnargli qualsiasi altra estensione. Si possono utilizzare anche le estensioni standard .htm .html, ma ciò significherebbe chiamate PHP per tutte le pagine richieste, anche se non contengono codice PHP: questo rallenterebbe inutilmente il lavoro del server e dunque è meglio evitarlo.