Php e MySQL
CONCETTI FONDAMENTALI
PROGRAMMAZIONE SERVER-SIDE e CLIENT-SIDE
Concetti di server e di client
Sia i server che i client sono delle applicazioni, ma la loro denominazione (server e client
appunto) deriva dal ruolo che essi assumono nel contesto in cui sono utilizzati.
Solitamente il computer che ospita un server ha delle caratteristiche tecniche (potenza del
processore, memorie, ecc.) più performanti rispetto a quello di un client: un server infatti
non è altro che un fornitore di servizi ed è quindi necessario che sia predisposto per
rispondere efficacemente (e in tempi rapidi) alle richieste che provengono dall’esterno.
Esempi di servizi sono:
 server web: contiene uno o più siti web e permette loro di essere visibili in tutta la rete
Internet, elabora tutte le richieste dei visitatori rispondendo in maniera adeguata (nel
seguito lo vedremo più nel dettaglio);
 mail server (o server di posta elettronica): permette la gestione e la protezione della
posta elettronica degli utenti iscritti a un determinato provider di servizi;
Vi sono ancora numerose tipologie di server, ognuna delle quali permette di fornire un
determinato servizio.
Un client è comandato da un utente (cioè una persona), il quale sfrutta, a proprio
vantaggio e come meglio ritiene, i servizi offerti dal server. In una rete aziendale (o
scolastica) ogni postazione è per forza un client. Anche il nostro PC casalingo diventa un
client nel momento in cui naviga in Internet: il meccanismo della visita di un sito
concettualmente è quello che il client invia una richiesta al server web che contiene il sito
da visitare, e questo server risponde al client inviandogli la pagina richiesta (più avanti
approfondiremo questo concetto).
Programmazione “lato server” e “lato client”
Un linguaggio lato client è interpretato dal browser dell’utente che si collega.
Un linguaggio lato server è interpretato dal server e poi restituito in HTML al browser.
La differenza sostanziale tra il linguaggio di programmazione lato server ed un linguaggio
lato client (es. JavaScript, HTML) è che il linguaggio lato client è interpretato dal browser
dell’utente che si collega, mentre quello lato server è interpretato dal server e poi restituito
in HTML al browser.
La programmazione Client-Side è un metodo attraverso il quale l’utente richiede al server
attraverso un programma definito browser una determinata pagina web, questa pagina è
fisicamente trasferita dal server al computer dell’utente e grazie al browser è poi
interpretata ed i risultati visualizzati sullo schermo. In definitiva tutti i processi di
elaborazione, la logica ed il codice sono eseguiti sul computer di chi sta “vedendo” il
programma (il browser web nella maggioranza dei casi).
La programmazione Server-Side prevede sempre il solito meccanismo di chiamata ma
stavolta siccome gli stessi processi, la logica ed il codice trovano loro sede naturale nel
Server, all’utente non arriva altro che un file contente la risposta ovvero le elaborazioni
fatte dal server in base alle richieste dell’utente. Questa risposta può essere un file da
scaricare, così come una pagina html da visualizzare, piuttosto che una immagine o un
filmato da visionare e così via.
Php e MySQL
pagina 1 di 5
Browser:
un programma che consente di visualizzare i contenuti delle pagine dei siti web e di interagire con
essi, permettendo così all'utente di navigare in internet.
Pagina statica e pagina dinamica
Il linguaggio standard per scrivere pagine web è il famoso HTML (Hyper Text Markup
Language). Esso non è un linguaggio di programmazione, poiché non può essere usato
per scrivere algoritmi risolutivi di uno o più problemi, bensì è un linguaggio di contrassegno
(o di marcatura) basato su tag (contrassegni o marcatori); ogni tag serve per descrivere un
elemento della pagina HTML, come ad esempio il testo in grassetto, corsivo o sottolineato,
oppure un’immagine (con i relativi attributi).
Per scrivere codice HTML, è sufficiente utilizzare un qualsiasi editor di testo (ad esempio
Blocco Note di Windows) e per vedere il risultato del codice scritto, è necessario aprire la
pagina con un opportuno programma detto browser (ad esempio Internet Explorer, Opera,
Mozilla, Netscape, ecc.) il quale provvederà a decifrare il codice, per poi stampare a video
la pagina risultante.
E’ evidente che una pagina HTML, se non è modificata manualmente da una persona,
rimane invariata nel tempo: per questo si usa dire che le pagine HTML sono statiche.
Per dinamica si intende una pagina il cui contenuto non è prefissato, ma è (parzialmente o
interamente) generato in tempo reale in base alle richieste dell’utente.
Se si desidera dare alle nostre pagine un tono di dinamicità è necessario ricorrere a dei
linguaggi di scripting, cioè linguaggi di programmazione orientati al web, nel senso che
sono predisposti per la scrittura di pagine web di internet. Sono linguaggi di scripting ASP
(Active Server Pages, usato prevalentemente su piattaforme Microsoft), PHP (Hypertext
PreProcessor o Personal Home Page), PERL, Java, ecc..
Quando si visita una semplice pagina HTML, il server web ricerca il file richiesto e lo invia
così com’è, senza effettuare alcuna operazione preliminare. In questo caso, si parla di
programmazione lato client, poiché l’interpretazione del codice è effettuata dal client,
mentre il server web si occupa solo di inviare la pagina richiesta.
Se l’utente richiede di visitare una pagina PHP avviene l’esatto opposto: il client invia la
richiesta al server web, il quale, attraverso un apposito motore (programma che permette
l’esecuzione del codice scritto in uno dei linguaggi di scripting… ad esempio il motore PHP
esegue codice PHP) installato sul server, interpreta il codice (PHP…), dopodiché il
risultato dell’elaborazione è inviato al client in formato HTML. In questo caso si parla di
programmazione lato server, poiché le operazioni di interpretazione del codice sono
effettuate dal server web, mentre il client vede soltanto il risultato, in HTML, di tale
elaborazione. E’ evidente quindi che il codice di uno dei linguaggi di scripting lato server è
protetto, perché non è visibile dall’utente (che appunto vede solo HTML).
Tre moduli standard di un server web (Apache, PHP, MySQL Server)
In questo paragrafo sono descritti i moduli standard da cui questo server è composto. Si
parla di moduli standard poiché esistono diverse configurazioni di un server web, oltre a
quella di cui si parlerà di seguito. Ad esempio, in ambiente Microsoft, un server web
contiene un solo grande modulo chiamato IIS (Internet Information Services) che
permette, oltre alle funzioni basilari di un normale server web, di utilizzare ASP e database
Access.
Php e MySQL
pagina 2 di 5
I tre moduli standard sono i seguenti:
 Apache: è il modulo software principale perché permette a una qualsiasi macchina
(computer) di lavorare come un server web (di default questo modulo si mette in ascolto
sulla porta 80);
 Motore PHP (o PHP scripting engine): è un modulo software che permette al server
web di eseguire anche codice PHP; senza di esso il server web potrebbe solo lavorare
con pagine HTML, mentre le pagine PHP non potrebbero essere interpretate
(sarebbero viste solo come normali file di testo);
 MySQL Server: è un modulo software aggiuntivo che permette al sito internet installato
nel server web di interagire con i database MySQL. La dicitura “server” aggiunta a
MySQL indica che tale modulo può lavorare come piattaforma, ovverosia può essere
eseguito indipendentemente dalla presenza di Apache.
L’ordine con il quale sono stati esposti questi moduli non è casuale: infatti una pagina PHP
non può essere eseguita (e vista quindi da un visitatore) se non è stato installato Apache
(o un qualsiasi altro software per server web). MySQL è un modulo a sé stante e
aggiuntivo, non è quindi fondamentale ai fini di un corretto funzionamento del sito e si
installa solo se si intende utilizzare il DataBase. Infatti spesso capita che, quando si
sottoscrive un sito a un mantainer (azienda che si occupa di mantenere il nostro sito
internet), MySQL Server non è compresa nella configurazione predefinita di un server
web, ma è un servizio aggiuntivo che viene fornito pagando una somma supplementare a
quella prevista dal contratto di base.
La seguente figura rappresenta la situazione che si verifica quando un utente richiede una
pagina web dinamica.
1
7
Server
Web (2)
6
3
4
Php
5
Server
MySQL
1. il visitatore digita l’indirizzo della pagina sulla barra degli indirizzi del browser che sta
usando oppure lo compone attraverso link presenti su altre pagine; il client utilizzato dal
visitatore individua qual è il server web su cui risiede quella pagina e gli invia la
richiesta;
2. il server elabora la richiesta, “estrae” (dal proprio disco rigido) la pagina e comincia a
“leggerne” il contenuto;
3. ogni volta che il server si “accorge” che in tale pagina vi è codice PHP, interrompe la
lettura e richiama il motore PHP affinché esegua il proprio codice: il risultato
dell’esecuzione sarà scritto in HTML. Da questa affermazione è evidente quindi che in
una pagina PHP è possibile “mischiare“ codice HTML con codice PHP senza provocare
alcun problema;
Php e MySQL
pagina 3 di 5
4. se nel codice PHP si individuano delle query (interrogazioni sul DataBase) da eseguire,
il modulo PHP si interrompe richiamando il modulo MySQL, il quale restituirà il risultato
della query attraverso un recordset (se si tratta di una query di selezione) oppure
modificando il database;
5. il server MySQL risponde restituendo i dati richiesti;
6. al termine dell’esecuzione del codice PHP e delle query SQL, il server web riprende la
lettura della pagina inserendo il codice HTML ottenuto nel file da inviare al client;
7. al termine di tutta l’elaborazione, il server web invia al browser dell’utente la pagina
richiesta in formato HTML, generata in modo dinamico da Php.
Php e MySQL
pagina 4 di 5
PHP
Il linguaggio php (acronimo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti)
permette di poter creare una pagina HTML dinamicamente, cioè in risposta alle scelte del
client o del server.
Il significato originario dell' acronimo era Personal Home Page
Php è un linguaggio di scripting a lato server.
Un linguaggio di scripting è un linguaggio di programmazione interpretato, destinato in
genere a compiti di automazione del sistema (batch) o delle applicazioni (macro), o ad
essere usato all’interno delle pagine web.
Sistema batch:
il termine batch (letteralmente: infornata) viene usato per indicare un particolare modo di gestire le
operazioni di un sistema di calcolo. In sostanza significa che tutta la sequenza di operazioni e dati
necessari per svolgere un particolare compito vengono preparati in anticipo e memorizzati su un
adeguato supporto creando una procedura. La procedura viene poi eseguita dal sistema come un
blocco unico, cioè senza che sia necessario, o possibile, un intervento umano prima che sia
terminata. Il termine è contrapposto alla modalità interattiva, che si ha quando l'utilizzatore accede
direttamente ad un terminale o ad una interfaccia dell'elaboratore e segue passo passo le varie
fasi dell'operazione.
Macro:
Una macro è un insieme di istruzioni a cui viene assegnato un nome e servono per semplificare i
programmi. Una volta definita la macro, nel programma principale basterà richiamare il suo nome
per fare in modo che le istruzioni siano eseguite. A differenza dei sottoprogrammi, le macro si
“espandono” , cioè, il loro codice viene scritto tante volte quante sono le chiamate. Quindi
occupano più spazio di memoria di un sottoprogramma, però, sono eseguite in meno tempo , dato
che non c’è una chiamata ed un ritorno nel tempo di esecuzione.
Linguaggio compilato e linguaggio interpretato:
Un programma viene sviluppato scrivendo il codice sorgente in un opportuno linguaggio definito,
appunto, dalla sintassi del linguaggio stesso e sono memorizzati all’interno di file, detti file sorgenti
(source file), che non sono direttamente comprensibili dall’elaboratore (CPU), ma devono essere
“tradotti” in linguaggio macchina ( linguaggio costituito essenzialmente da sequenze di valori binari
che sono interpretate dalla CPU secondo una propria decodifica). Esistono essenzialmente due
tipologie di traduzione dei file sorgenti: l’interpretazione e la compilazione. Un file sorgente può
essere interpretato, ovvero deve esistere un programma scritto in linguaggio macchina, l’interprete
(interpreter), che traduce in linguaggio macchina, una dopo l’altra, tutte le istruzioni presenti nel file
sorgente (programma da tradurre) passandole via via alla CPU che le esegue. Un file sorgente
può essere compilato, ovvero deve esistere un programma scritto in linguaggio macchina, il
compilatore (compiler), che traduce in linguaggio macchina tutte le istruzioni presenti nel sorgente,
memorizzandole all’interno di un file eseguibile. La differenza è sostanziale: ogni volta che si
desidera far eseguire un programma interpretato è necessario far eseguire anche l’interprete a cui
si fa quindi tradurre il file sorgente sul momento, al volo (on-the-fly); se si desidera invece far
eseguire un programma compilato, già tradotto quindi in linguaggio macchina dal compilatore, non
è necessario far eseguire insieme ad esso anche il compilatore, poiché il programma compilato
(file eseguibile) è comprensibile direttamente dalla CPU (è in linguaggio macchina): il compilatore
è necessario soltanto nella fase di traduzione (compilazione) dei file sorgenti del programma, che
avviene una tantum. Per questo l’esecuzione di un programma compilato è notevolmente più
veloce rispetto a quella dello stesso programma interpretato: nel tempo di esecuzione di un
programma interpretato viene ovviamente incluso anche il tempo di traduzione di ogni istruzione,
mentre con il programma compilato non c’è traduzione durante la fase di esecuzione (esso è già
stato tutto tradotto).
Php e MySQL
pagina 5 di 5