Corso di Web Programming



Похожие документы
Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Introduzione alla programmazione in C

10 - Programmare con gli Array

Funzioni in C. Violetta Lonati

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Richiesta pagina PHP (es: index.php)

Metodologie Informatiche applicate al Turismo

Laboratorio di Informatica

19. LA PROGRAMMAZIONE LATO SERVER

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Esercizi di JavaScript

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Javascript: il browser

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Corso di PHP. Prerequisiti. 1 - Introduzione

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Web Programming Specifiche dei progetti

PHP 1. Scripting lato server. Come funziona uno script. Che cosa è PHP 1. Esempio. Elementi del linguaggio. Più pseudo-tag nello stesso documento

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

2 - Introduzione al linguaggio Java

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Calcolare il massimo di una lista

Corso basi di dati Installazione e gestione di PWS

PHP e MySQL. Guida scaricata da

Installazione & Configurazione Php e MySQL su Mac Os X. Php

Per accedere clicca su START o AVVIO (in basso a sinistra sul tuo schermo), poi su PROGRAMMI, ACCESSORI e infine su BLOCCO NOTE.

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

GESTIONE INFORMATICA DEI DATI AZIENDALI

Lezione II: Web server e ambiente di lavoro

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag <script> inserito nella sezione <head> con la seguente sintassi:

LABORATORIO PER IL DESIGN DELLE INTERFACCE PEGORARO ALESSANDRO CASSERO.IT MANUALE DI AGGIORNAMENTO, MANUTENZIONE E USO DEL SITO

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Gestione Risorse Umane Web

Introduzione al Python

HTML: i link ipertestuali. La sintassi di qualunque link in HTML è la seguente: <A HREF= indirizzo > parolacalda </A>

Java: Compilatore e Interprete

Siti interattivi e dinamici. in poche pagine

Manuali.net. Nevio Martini

Corso basi di dati Introduzione alle ASP

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Le stringhe. Le stringhe

Creare un sito Multilingua con Joomla 1.6

Linguaggio C - Stringhe

Laboratorio Progettazione Web Array in PHP Lezione 7. Andrea Marchetti IIT-CNR 2011/2012

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

Il Web Server e il protocollo HTTP

Capitolo 4 Pianificazione e Sviluppo di Web Part

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

ESERCITAZIONE Semplice creazione di un sito Internet

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

POSTECERT POST CERTIFICATA GUIDA ALL USO DELLA WEBMAIL

Programmare in Java. Olga Scotti

Il linguaggio HTML - Parte 4

Arduino: Programmazione

GERARCHIE RICORSIVE - SQL SERVER 2008

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Matlab: Strutture di Controllo. Informatica B

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Concetto di Funzione e Procedura METODI in Java

Corso di PHP. Prerequisiti. 1 - Introduzione

Corso sul linguaggio SQL

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Cosa è un foglio elettronico

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Introduzione allo sviluppo Web. Studium Generale, a.a , II semestre

Dispensa YACC: generalità

Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 17 Dicembre 2005

Introduzione a PHP: Concetti Fondamentali

Cookie e Webstorage. Vediamo ora i metodi dell oggetto localstorage. Per memorizzare un valore si utilizza il metodo setitem:

HTML il linguaggio per creare le pagine per il web

I file di dati. Unità didattica D1 1

La selezione binaria

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008


La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

NOZIONI BASE SHELL E SCRIPT LINUX

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

NOZIONI BASE PER ESERCITAZIONI

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

FtpZone Guida all uso

Транскрипт:

Corso di Web Programming 8. PHP Parte I Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea in Informatica Applicata A.A. 2010/2011 Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 1 / 28

Sommario 1 Introduzione a PHP 2 Configurazione di PHP 3 La sintassi del linguaggio Variabili ed espressioni Comandi Stringhe Array Funzioni Inclusione di file Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 2 / 28

Introduzione a PHP (1) PHP è un linguaggio di programmazione general-purpose che però viene utilizzato in pratica solo per creare siti web dinamici PHP è un acronimo ricorsivo che sta per PHP: Hypertext Preprocessor E un linguaggio interpretato, non compilato E un linguaggio a cui possono essere aggiunte estensioni che realizzano funzionalità specifiche e.g. aspetti di sicurezza/crittografia, interazione con altri siti web, ecc... Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 3 / 28

Introduzione a PHP (2) PHP viene eseguito (interpretato) da un server web è un linguaggio di scripting server-side Il codice PHP viene usato per generare dinamicamente i documenti HTML che il client deve ricevere e visualizzare nel browser In un sito web statico (non-php) il documento HTML viene preso dal file system e inviato direttamente al client In un sito web dinamico (tipo PHP) i file del web server sono passati all interprete PHP che genera il documento HTML da inviare al client Quindi: l output di un programma PHP è un documento HTML Il codice PHP può fare quello che gli pare per creare il documento HTML Ad esempio: accedere a un database, consultare altri siti web, ecc... Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 4 / 28

Introduzione a PHP (3) I file PHP sono strutturati come un documento HTML ma contengono sezioni di codice PHP delimitate da <?php e?> L interprete PHP effettua il parsing del file (lo scandisce) e sostituisce le sezioni di codice PHP con il codice HTML risultante dalla sua esecuzione Tutto ciò che è al di fuori del tag <?php... dall interprete e dato in output così com è?> viene ignorato Solitamente l estensione usata per i file PHP è.php Per eseguire lo script bisogna necessariamente passare tramite il web-server: non è sufficiente aprire il file con il browser nel caso di un utilizzo locale bisogna avere installato un server HTTP + PHP, e bisogna aprire nel browser un indirizzo tipo: http://localhost/miapagina.php Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 5 / 28

Introduzione a PHP (4) Un semplice esempio di file PHP (il solito Hello World): <html > <head >< title > Hello World in PHP </ title > </ head > <body > <? php print "<p>hello, World! </p>"; print " <p> Questo e un frammento di codice PHP. Nota che fa parte di un documento HTML standard! </p >;?> </body > </html > E il corrispondente output HTML generato dall interprete PHP: <html > <head >< title > Hello World in PHP </ title > </ head > <body > <p>hello, World! </p> <p> Questo e un frammento di codice PHP. Nota che fa parte di un documento HTML standard! </p> </body > </html > Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 6 / 28

Introduzione a PHP (5) In realtà esistono due alternative per scrivere l output in PHP: echo e print echo è un comando nativo del linguaggio (forse più veloce di print) print è una funzione di libreria, quindi un espressione (può essere usata in espressioni condizionali: (a>b?print(a):print(b)) L uso delle parentesi attorno al messaggio da stampare è opzionale Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 7 / 28

Introduzione a PHP (6) E importante sottolineare che l output di PHP è un documento HTML Il client riceverà tale output senza vedere il codice PHP che lo ha originato In generale il client non percepisce la differenza tra un sito web statico e un sito web dinamico in entrambi i casi il client riceve un documento HTML e lo visualizza nel browser Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 8 / 28

Configurazione di PHP (1) L interprete PHP può essere configurato in maniera molto dettagliata Elevato numero di opzioni settabili e possibili estensioni I settaggi di default sono specificati nel file php.ini la directory in cui si trova questo file dipende dall istallazione La configurazione corrente di php su un web server può essere visualizzata chiamando la funzione PHP phpinfo() L output di questa funzione è un documento HTML (intero) contenente una tabellona che riassume tutte le opzioni ed estensioni configurate Utile per il mantenimento di un installazione di PHP e per il debugging di applicazioni tipicamente si usa appena si è installato PHP (o un estensione) sul proprio computer per vedere se è tutto OK Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 9 / 28

Configurazione di PHP (3) <? php phpinfo ();?> Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 10 / 28

Overview La sintassi di PHP è simile a quella di C,C++ e Java (ma senza tipi) Tutto il codice PHP va messo all interno di tag <?php... > il tag <?php... > può essere usato più volte all interno dello stesso file tutto ciò che si trova al di fuori di tali tag viene dato in output così com è Come C,C++ e Java: I comandi sono separati da ; PHP è case-sensitive (distingue tra maiuscole e minuscole) PHP supporta commenti a singola linea e multilinea con la stessa sintassi di C++ e Java: <? php // Questo e un commento che verra trascurato // dall interprete PHP... /*... tanto quanto questo commento, che puo occupare tranqullamente piu linee */?> Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 11 / 28

Le variabili (1) Come in ogni linguaggio di programmazione imperativo, in PHP si ci sono le variabili Differentemente dal solito il nome di una variabile deve iniziare con $, seguito da una lettera o un Esempi: $username, $color, $i, $ nome... Non esiste un costrutto di dichiarazione di variabili Ossia, non c e bisogno di dichiarare una variabile prima di iniziare a usarla! I tipi di dato è come se non esistessero! Una variabile può essere assegnata a valori di tipo diverso in momenti diversi L operatore di assegnamento di una variabile è = (come in C,C++ e Java) Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 12 / 28

Le variabili (2) L uso di $ all inizio delle variabili consente di definire variabili variabili, ad esempio: $a = b; $b = 1; echo $$a ; produce come risultato 1!!! Potente, ma pericoloso: può indurre a errori di programmazione espone a rischi di sicurezza se si usano dati ottenuti dall utente Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 13 / 28

Le variabili (3) Lo scope di una variabile in PHP è la pagina stessa Ogni variabile esiste solo per lo script (pagina) in cui è definita e alla fine dell esecuzione viene distrutta Si può verificare se una variabile è stata inizializzata con la funzione isset: isset ( $var ) restituisce true se $var è stata precedentemente assegnata, $false altrimenti E possibile distruggere una variabile precedentemente assegnata tramite la funzione unset: unset ( $var ) Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 14 / 28

Le espressioni Gli operatori che si possono usare nelle espressioni sono sostanzialemente gli stessi di C/C++/Java: Operatori aritmetici: +,-,*,/,%,++,-- Operatori di confronto: ==,!=,<,>,<=,>= Operatori logici: &&,,! Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 15 / 28

Comandi Anche i comandi del linguaggio sono come in C/C++/Java: Comandi di selezione: if ($trovato) {...} if ($trovato) {...} else {...} switch ($msg) { case "a" :... break; case "b" :... break; default :... } Comandi di iterazione: while (!$trovato) {...} do {...} while (!$trovato) for ($i=0;$i<10;$i++) {...} Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 16 / 28

Le stringhe (1) In PHP le stringhe possono essere delimitate da virgolette (ossia ") o da apici (ossia ) Quando si usano gli apici ( ) la stringa viene interpretata letteralmente (esattamente com e scritta) Quando si usano le virgolette (") le eventuali variabili contenute nella stringa vengono sostituite con il loro valore // esempio sull uso delle virgolette e degli apici $food = " patate " $virgolette = " Io adoro mangiare $food."; $apici = Io invece adoro mangiare $food. ; print " <p> $virgolette </ p>"; print "<p>$apici </p>"; Risultato: Io adoro mangiare patate. Io invece adoro mangiare $food. Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 17 / 28

Le stringhe (2) L operazione di concatenazione di stringhe è il punto:. $nome = " Mario "; $cognome = " Rossi "; $nomeintero = $nome. " ". $cognome ; Altre operazioni sulle stringhe includono: strlen($s) restituisce la lunghezza della stringa $s strlen("hello world!") restituisce 12 strpos($s1,$s2) restituisce la posizione di $s2 in $s1, o false se non presente strpos("hello world!","world") restituisce 6 trim($s) elimina gli spazi all inizio e alla fine di $s trim(" Hello world! ") restituisce "Hello world!"... Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 18 / 28

Gli array (1) PHP offre due tipi di array (in realtà il secondo è un caso particolare del primo): array numerici come in C/C++/Java che associano valori a indici numerici chiavi 1 2 3 4 valori pippo pluto paperino topolino array associativi che associano valori a chiavi, possibilmente non numeriche chiavi a b c d valori pippo pluto paperino topolino Il costrutto per la creazione di un nuovo array è array(...), e per associare una chiave ad un valore si usa =>: Array numerico: $an = array("pippo","pluto","paperino","topolino"); Array associativo: $aa = array("a" => "pippo", "b" => "pluto", "c" => "paperino", "d" => "topolino"); Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 19 / 28

Gli array (2) L accesso all array può avvenire tramite l indice o la chiave: echo $an[0]; echo $aa["a"]; Un array può anche essere creato assegnandone un elemento: $an[0] = "pippo"; $aa["a"] = "pippo"; Nel caso di un array numerico, se non si specifica l indice il nuovo elemento verrà aggiunto in coda all array (l array è creato se non esiste): $an[] = "pippo"; Per itererare su tutti gli elementi di un array si può usare il costrutto foreach: foreach ($myarray as $var) {... } foreach ($myarray as $index => $var) {... } che scorre l array $myarray associando alla variabile $var i valori contenuti (e alla variabile $index le chiavi corrispondenti) Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 20 / 28

Gli array (3) Esempio: mostra i personaggi contenuti in un array in una tabella HTML: <table border =" 1" > <tr ><th > Personaggio </th > </tr > <? php $pers = array (" pippo "," pluto "," paperino "," topolino "); foreach ( $pers as $nome ) { }?> </ table > print Con array associativo: "<tr ><td > $nome </td > </tr >\n"; <table border =" 1" > <tr ><th > Chiave </th ><th > Personaggio </th > </tr > <? php $pers = array ("a"=>" pippo ","b"=>" pluto ", "c"=>" paperino ","d"=>" topolino "); foreach ( $pers as $idx => $nome ) { }?> </ table > print "<tr ><td >$idx </td ><td > $nome </td > </tr >\n"; Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 21 / 28

Gli array (4) Alcune funzioni utili per lavorare con gli array: count($a) restituisce il numero di elementi di un array (simile al metodo length di Java e JavaScript) if ( count ( $pers )=0) { echo " Errore, l array e vuoto!"; } in array(val, $a) verifica se il valore val è presente nell array $nome = " pluto "; if ( in_array ( $nome, $pers )) echo " Il personaggio $nome e presente nell array "; array merge($a1,...,$an) unisce tutti gli array elencati in un unico array $pers1 = array (" pluto "," paperino "); $pers2 = array (" topolino "," paperone "); $pers = array_merge ( $array1, $array2 ); sort($a) e rsort($a) ordinano l array passato come parametro (modificandolo) in ordine crescente e decrescente segue... Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 22 / 28

Gli array (5) Alcune funzioni utili per lavorare con gli array: explode(sep,str) e implode(sep,$a) convertono una stringa in un array e viceversa per mezzo di un carattere separatore: $personaggi = " pippo topolino paperino paperone "; $pers_array = explode (" ", $personaggi ); $personaggi_virgola = implode (",", $pers_array ); echo $personaggi_virgola ; Il risultato è pippo,topolino,paperino,paperone. print r($a) stampa gli elementi dell array come un unica stringa $a (se associativo, stampa anche le chiavi) Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 23 / 28

Funzioni (1) Come in JavaScript, le funzioni si definiscono tramite la parola chiave function. Le funzioni possono prevedere argomenti di cui non è necessario specificare il tipo. Le funzioni possono prevedere un valore di ritorno da restituire tramite return. Le variabili usate dentro a una funzione sono locali alla funzione stessa. Di default una funzione non vede le variabili create fuori della funzione stessa. Per poter accedere a una variabile globale bisogna usare la dichiarazione global dentro la funzione $a = 22; function f() { global $a; echo $a; } Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 24 / 28

Funzioni (2) Esempi di funzioni: Una funzione che restituisce un valore: function add ($x,$y) { return $x+$y; } Una funzione senza valori di ritorno che stampa l intestazione della pagina web: function intestazione () { print "<h1 >Il mio sito </h1 >\n"; print "<hr >"; print date ("l F d, Y"); print "<hr >"; } Chiamate di funzioni: $somma = add (5,10); intestazione (); Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 25 / 28

Espressioni Regolari PHP mette a disposizione diverse librerie di funzioni per lavorare con espressioni regolari. La libreria più importante è la PCRE library (Perl-Compatible Regular Expression), le cui funzioni principali sono le seguenti: preg match (regex, str) restituisce 1 o 0 a seconda che l espressione regolare regex (espressa come stringa) venga matchata almeno una volta nella stringa str Esempio: preg match( /[ab]+/, ababcbb ) restituisce 1; preg match all (regexp, str, $matches) restituisce il numero di match di regex in str, e inserisce tutti i match nell array $mathces passato come parametro Esempio: preg match( /[ab]+/, ababcbb,$matches) restituisce 1; inoltre $matches[0] = abab e $matches[1] = bb preg replace (regex, str1, str2) restituisce una stringa in cui tutti i match di regex in str2 sono sostituiti con str1 Esempio: preg replace( /[ab]+/, zzz, ababcbb ) restituisce zzzczzz; Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 26 / 28

Inclusione di file (1) Per condividere e riutilizzare porzioni di script e funzioni si usa frammentare il codice in più file in modo da poterlo includere quando serve. In PHP abbiamo due funzioni che importano il codice da un file esterno: include(nomefile) importa il codice contenuto nel file indicato, senza interrompersi se il file non esiste require(nomefile) importa il codice contenuto nel file indicato, interrompendo l esecuzione se il file non esiste Le due funzioni possono essere usate ovunque nel codice, ma comunque prima dei riferimenti fatti a variabili o funzioni contenuti nel file da includere Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 27 / 28

Inclusione di file (2) Le funzioni per l inclusione di files consentono di realizzare le Server Side Includes : porzioni di documenti HTML comuni a più pagine (e.g. menu, intestazioni di pagine, ecc...) <html > <body > <div class =" leftmenu " > <? php include (" menu. php ");?> </div > <h1 > Welcome to my home page. </h1 > <p> Some text. </p> </body > </html > dove menu.php potrebbe essere: <a href ="/ default. php ">Home </a> <a href ="/ tutorials. php ">Tutorials </a> <a href ="/ references. php ">References </a> <a href ="/ examples. php ">Examples </a> <a href ="/ about. php ">About Us </a> <a href ="/ contact. php ">Contact Us </a> Paolo Milazzo (Università di Pisa) WebProg 8 - PHP Parte I A.A. 2010/2011 28 / 28