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