PHP. Indice. PHP: Hypertext Preprocessor. Introduzione Sintassi Fondamentale Tipi Variabili Costanti Operatori Strutture di controllo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "PHP. Indice. PHP: Hypertext Preprocessor. Introduzione Sintassi Fondamentale Tipi Variabili Costanti Operatori Strutture di controllo"

Transcript

1 PHP PHP: Hypertext Preprocessor Indice Introduzione Sintassi Fondamentale Tipi Variabili Costanti Operatori Strutture di controllo Funzioni Form Cookie Sessione File 1

2 Introduzione PHP è un linguaggio di scripting general-purpose Sintassi basata su quella di C, Java e Perl Obiettivo principale: permettere agli sviluppatori web di scrivere velocemente pagine web dinamiche Integrato nell'html Semplice da imparare E Open Source Parte di LAMP: Linux-Apache-MySQL-PHP/Perl/Python PHP 4 la versione più diffusa PHP 5 disponibile dal 2004 con un nuovo modello a oggetti Sintassi Un file PHP contiene tag HTML e del codice PHP di scripting. Esempio di un semplice script PHP che invia il testo "Hello World" al browser: <html> <body> <?php echo "Hello World";?> </body> </html> 2

3 Sintassi Un blocco PHP è racchiuso tra <?php e?> e può essere inserito ovunque nel documento. Ciascuna linea di codice PHP termina con un punto e virgola Le due istruzioni fondamentali per l output di testo in PHP sono echo e print. Commenti In PHP, si usa // per fare un commento su singola linea /* e */ per commentare un blocco di linee. <?php // Questo e una linea di commento /* Questo e un blocco di commento */?> 3

4 Variabili Tutte le variabili in PHP iniziano con un simbolo di dollaro ($). Possono contenere stringhe, numeri o array. <?php $txt = "Hello World"; echo $txt; unset($txt); // dealloca // distrugge più di una variabile unset($foo1, $foo2, $foo3);?> Tipi PHP 4 supporta 8 tipi primitivi + NULL 4 tipi scalari: boolean integer float string 2 tipi composti: array object 4

5 Conversione Type juggling PHP non richiede la definizione esplicita del tipo in una dichiarazione di variabile, il cui tipo è determinato dal contesto Conversione esplicita tramite cast <?php?> $foo = TRUE; // $foo è boolean $foo = "0"; // $foo è string $foo += 2; // $foo è integer (2) $foo = $foo + 1.3; // $foo è float (3.3) $bar = (integer) $foo; // $bar è integer (3) Esercizio 1 Scrivete uno script PHP che dichiari variabili di tipo scalare Lo script deve generare una pagina HTML a piacere con le informazioni sul nome e valore delle variabili Testate anche il cast esplicito 5

6 String Una stringa può essere specificata in 3 diversi modi. single quoted si specifica tra apici singolo '...' double quoted si specifica tra doppi apici "..." heredoc syntax si specifica tra un identificatore da definire Esempi // stampa: Ciccio dice: "I'll be back" echo 'Ciccio dice: "I\'ll be back"'; // stampa: Le variabili si espandono $var = "espandono"; echo "Le variabili si $var"; 6

7 Esempi <?php $str = <<<EOD Esempio di stringa che occupa piu linee usando la sintassi heredoc. EOD;?> Concatenazione Per concatenare due o più variabili, si usa l operatore punto (.): <?php?> $txt1 = "Hello World"; $txt2 = "1234"; echo $txt1. " ". $txt2 ; 7

8 Array Un array può essere creato dalla funzione array() Sintassi: array( [key =>] value ) key è di tipo integer o string value è di qualsiasi tipo <?php $arr = array("foo" => "bar", 12 => true);?> echo $arr["foo"]; // stampa bar echo $arr[12]; // stampa 1 Costanti È convenzione comune che i nomi di costante siano sempre maiuscoli. Le costanti possono contenere solo dati di tipo boolean, integer, float e string. Non è necessario anteporre il simbolo $ al nome Le costanti possono essere definite e utilizzate ovunque senza seguire le regole di visibilità. Una volta impostate, le costanti non posso essere ridefinite, né annullate. 8

9 Costanti Le costanti possono essere definite solo con la funzione define() e non tramite assegnazione <?php define("costante", "Ciao mondo."); echo COSTANTE; // stampa "Ciao mondo." echo Costante; // stampa "Costante?> Esercizio 2 Scrivete uno script PHP che generi una pagina HTML Dovete usare i 3 diversi tipi di stringhe nel codice Dovete concatenare tra loro 2 o più stringhe Usate gli array Definite e usate 2 o più costanti 9

10 Visibilità <?php $a = 1; /* global scope */ $b = 2; function pippo() { global $a; // accede ad a globale $c = 3 + $a; /* local scope */ $c += $GLOBALS["b"]; // accede ad b }?> Operatori Aritmetici Operator + - * / % Descrizione Addizione Sottrazione Moltiplicazione Divisione Modulo (resto divisione) Incremento Decremento 10

11 Operatori di confronto Operatore ==!= > < >= <= Descrizione Uguale Diverso Maggiore Minore Maggiore o uguale Minore o uguale Operatori logici Operatore &&! Descrizione and or not 11

12 Condizioni if-elseif-else if ($a > $b) { print "a è maggiore di b"; } elseif ($a == $b) { print "a è uguale a b"; } else { print "a è minore di b"; } Condizioni switch switch (expr) { case label1: code to execute; // expr == label1 break; case label2: code to execute; // expr == label2 break; default: code to execute; // expr!= label1&label2; } 12

13 Esempio <?php switch ($x) { case 1: echo "Number 1"; break; case 2: echo "Number 2"; break; default: echo "No number between 1 and 2"; }?> Cicli Le istruzioni di ciclo in PHP 4: while cicla attraverso un blocco di codice finché la condizione specificata è vera do...while cicla attraverso un blocco di codice almeno una volta e continua finché la condizione specificata è vera for cicla attraverso un blocco di codice per uno specificato numero di volte foreach cicla attraverso un array 13

14 while Si comporta come la sua controparte nel linguaggio C. $i = 1; while ($i <= 10) { } print $i++; /* Il valore visualizzato è il valore della variabile $i prima del post-incremento */ do while Il ciclo do while è simile al ciclo while, con l'unica differenza che il blocco di istruzioni è eseguito almeno una volta. $i = 0; do { print $i; } while ($i>0); 14

15 for Si comporta come la sua controparte nel linguaggio C. /* esempio 1 */ for ($i = 1; $i <= 10; $i++) { print $i; } /* esempio 2 */ for ($i = 1;;$i++) { if ($i > 10) { break; } print $i; } foreach Fornisce una facile metodo per attraversare un array. Esistono due possibili notazioni sintattiche; la seconda è un'utile estensione della prima: 1) foreach(array_expression as $value) istruzione; 2) foreach(array_expression as $key => $val) istruzione; 15

16 foreach 1) Attraversa l'array dato da array_expression. Ad ogni ciclo, si assegna il valore dell'elemento corrente a $value e il puntatore interno avanza di una posizione foreach ($arr as $value) { } echo "Valore: $value<br />"; foreach 2) Esegue lo stesso ciclo con la differenza che il valore dell'indice corrente viene assegnato ad ogni ciclo, alla variabile $key. Nota: $arr[$key] == $value foreach ($arr as $key => $value) { } echo "Chiave:$key; Valore:$value<br />"; 16

17 Esercizio 3 Create uno script PHP che usi tutte le istruzioni di controllo e i cicli. Funzioni PHP non supporta l'overloading di funzioni, non è possibile ridefinire funzioni precedentemente dichiarate. Una funzione può essere definita usando la seguente sintassi: function foo (param1, param2,, paramn) { } echo "Funzione di esempio.\n"; 17

18 Funzioni: passaggio parametri E possibile passare una lista degli argomenti (variabili e/o costanti delimitati dalla virgola). Il passaggio può avvenire per: Valore (default) Riferimento Si possono specificare i valori di default degli argomenti Passaggio per Valore $arr = array(45, 79); stampa_array($arr); function stampa_array($vett){ // $vett è una copia di $arr echo "$vett[0] + $vett[1]"; } 18

19 Passaggio per Riferimento Il passaggio per riferimento consente a una funzione di modificare i valori dei parametri. Il parametro passato per riferimento non è più una copia dell originale (come nel passaggio per valore). Perché un argomento sia passato sempre per riferimento a una funzione, occorre anteporre & al nome dell'argomento nella definizione della funzione. Passaggio per Riferimento function aggiungi_qualcosa(&$string) { $string.= 'ed altro'; } $str = 'Questa è una stringa'; aggiungi_qualcosa($str); echo $str; // stampa 'Questa è una stringa e altro' 19

20 Valori predefiniti degli argomenti Una funzione può definire valori predefiniti per argomenti scalari I valori predefiniti DEVONO essere delle costanti I valori predefiniti DEVONO essere dichiarati dopo tutti i (a destra dei) parametri senza valori predefiniti function fare_il_caffe ($tipo = "cappuccino") { return "Sto facendo una tazza di $tipo.\n"; } echo fare_il_caffe (); // stampa " cappuccino" echo fare_il_caffe ("espresso"); Valori restituiti Sono restituiti usando l'istruzione opzionale return. Può essere restituito qualsiasi tipo function numeri_piccoli() { return array (0, 1, 2); } list ($zero, $uno, $due) = numeri_piccoli(); function &restituisce_riferimento(){ return $un_riferimento; } $nuovo_riferimento =& restituisce_riferimento(); 20

21 Inclusione di File E possibile includere le funzioni comuni in file esterni (librerie) I file si caricano con include() o require() <?php?> include("calculator.inc"); require( lib.php"); Esercizio 4 Scrivete alcune funzione in file e richiamatele da uno script esterno Almeno una funzione deve specificare il valore di default dei parametri e un altra deve usare il passaggio per riferimento 21

22 Variabili Predefinite $GLOBALS: array variabili globali $_COOKIE: array di var caricate con Cookie $_GET: con HTTP GET $_POST: con HTTP POST $_REQUEST: con GET e POST Form Qualsiasi elemento di un form HTML è automaticamente disponibile per script PHP Ci sono più modi di accedere a questa informazione I due modi più semplici per accedere sono i seguenti 22

23 Form <body> <form method="post" action="esercizio8.php"> User ID: <input type="text" name="uid" /> <br /> Password: <input type="password" name="passwd" /> <br /> <input type="submit" value="logon" /> </form> </body> Form <body> <p> </p> </body> Ciao <?php echo $_POST["uid"];?> La tua password è: <?php echo $_REQUEST["passwd"];?> 23

24 Cookie Sono un meccanismo per memorizzare dati in remoto Possono essere impostati tramite la funzione setcookie() La funzione setcookie() deve apparire PRIMA del tag <html> Sintassi: setcookie(nome, valore, scadenza); Cookie <?php // setta cookie valido per 1 ora setcookie("uname", Ciccio", time() );?> <html> <body> <p> Cookie settato sul server.<br /> Clicca <a href="esercizio7.php">qui</a> </p> </body> </html> 24

25 Cookie <html> <body> <p> <?php if (isset($_cookie["uname"])) echo Benvenuto ". $_COOKIE["uname"]. "!<br />"; else echo Sconosciuto!<br />";?> </p> </body> </html> Cookie Nota: per rimuovere un Cookie, è sufficiente usare setcookie() specificando come scadenza una data già scaduta Es: setcookie("uname", "Ciccio", time() ); 25

26 Esercizio 5 Esercizio con form HTML che chiama uno script PHP passandogli delle variabili. Salvate almeno una di queste variabili in un cookie Chiamate un terzo script che cancella il suddetto cookie Sessione HTTP è un protocollo senza stato Per mantenere la sessione è possibile usare le funzioni di mantenimento della Sessione di PHP La sessione permette di mantenere il valore delle variabili anche quando i Cookie sono disabilitati. 26

27 Sessione Quando si inizia una sessione all utente è assegnato un ID di sessione univoco. Se il client utente accetta i cookie, l ID di sessione è salvato in un cookie, il cui nome è prestabilito Altrimenti, l ID di sessione è propagato tra gli script attraverso la query string o input form. Note: In una sessione, tutte le variabili di sessione di un utente sono salvate in un file server side, Questo file è associato all utente mediante l ID di sessione Le variabili di sessione non sono salvate in cookie, né sono propagate attraverso la query string o input form Sessione // script 1: avvia sessione... <?php session_start(); // start session $_SESSION['nome'] = 'Jesper';?>... 27

28 Sessione // script 2: continua sessione... <?php session_start(); // <-- echo 'Hello '.$_SESSION['nome'];?>... Sessione // script 3: distrugge sessione... <?php session_start(); // <-- unset($_session['nome']); // oppure session_unset(); session_destroy();?>... 28

29 Sessione Ricordate Le variabili di sessione non sono cookie La sessione consente di associare a un utente un file sul server side che contenga le sue variabili persistenti. E possibile distruggere le sessioni utente e tutte le variabili associate Dovete sempre usare session_start() negli script per abilitare l array $_SESSION. Essa non solo avvia, ma continua la sessione corrente. Esercizio 6 Create degli script che simulino il logon e logoff in un applicazione web mediante creazione e cancellazione di una sessione. 29

30 File fopen apre / crea nuovo file fread legge da un file fwrite scrive in un file fclose chiude l accesso a un file file legge il contenuto di un file in un array Per le altre funzioni di accesso al filesystem, consultare: fopen() Sintassi: int fopen( path/file", "w"); Restituisce un puntatore al file, come in C Modo: 'r' - Apre in sola lettura; posiziona il puntatore all'inizio del file. 'r+' - Apre in lettura e scrittura; posiziona il puntatore all'inizio del file. 'w' - Apre il file in sola scrittura; posiziona il puntatore all'inizio del file e tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo. 'w+' - Apre in lettura e scrittura; posiziona il puntatore all'inizio del file e tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo. 'a' - Apre in sola scrittura; posiziona il puntatore alla fine del file. Se il file non esiste, tenta di crearlo. 'a+' - Apre in lettura e scrittura; posiziona il puntatore alla fine del file. Se il file non esiste, tenta di crearlo. 30

31 fread() Sintassi: string fread(int fp, int lung) Restituisce stringa letta dal file, di lunghezza specificata fwrite() Sintassi: int fwrite(int puntatore, string testo) Restituisce il numero di caratteri scritti 31

32 fclose() Sintassi: bool fclose(int fp) Restituisce TRUE in caso di successo, FALSE in caso di fallimento file() Sintassi: array file (string filename) Restituisce le linee del file in un array 32

33 Esempio $fp = fopen("./ciccio.txt", "w"); if(!$fp) die ("Cannot open the file"); fwrite($fp, 'Hello world!'); fclose($fp); Esempio $lines = file ("ciccio.txt"); if(!is_array($lines)) die('non è un array'); foreach($lines as $single_line) echo $single_line; 33

34 Esercizio 7 Realizzate uno script PHP che: crea e scrive in un file riapre e appende testo al file suddetto legge il contenuto di un file e lo mostra nel browser Provate a realizzare uno script che visualizzi nel browser il contenuto (file e sottocartelle) di una directory Riferimenti

Introduzione a PHP Gestione dei Dati e della Conoscenza

Introduzione a PHP Gestione dei Dati e della Conoscenza Introduzione a PHP Gestione dei Dati e della Conoscenza Diego De Cao, Roberto Basili {decao,basili}@info.uniroma2.it a.a. 2008/2009 PHP Overview PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment Obiettivi d esame PHP Developer Fundamentals on MySQL Environment 1.0 Ambiente di sviluppo 1.1 Web server e database MySQL Comprendere la definizione dei processi che si occupano di fornire i servizi web

Dettagli

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

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1 MODULO 1 PARTE 3 Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni Goy - a.a. 2012/2013 Programmazione Web 1 Cookie - I Cookie = variabili che il server salva (*) sul client come file

Dettagli

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

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas PHP A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas Copyright Istituto Italiano Edizioni Atlas Programmazione lato server PHP è un linguaggio che estende le funzionalità

Dettagli

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script.

Dove die( stringa ) è una funzione di utilità del php che stampa la stringa e fa terminare lo script. I file in PHP Un file è un archivio elettronico contenente informazioni (dati) memorizzate su memoria di massa. Il file ha la caratteristica di consentire la lettura, la scrittura e la modifica dei dati

Dettagli

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo Il linguaggio PHP Parte I Introduzione Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it A.A. 2010/2011 Paolo Milazzo (Università di Pisa)

Dettagli

Introduzione al linguaggio PHP. Matteo Manzali INFN CNAF - Università degli Studi di Ferrara

Introduzione al linguaggio PHP. Matteo Manzali INFN CNAF - Università degli Studi di Ferrara Introduzione al linguaggio PHP Matteo Manzali INFN CNAF - Università degli Studi di Ferrara Introduzione a PHP PHP è un linguaggio di programmazione general-purpose che viene utilizzato in larga parte

Dettagli

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28

Indice. 1.13 Configurazione di PHP 26 1.14 Test dell ambiente di sviluppo 28 Indice 25 184 Introduzione XI Capitolo 1 Impostazione dell ambiente di sviluppo 2 1.1 Introduzione ai siti Web dinamici 2 1.2 Impostazione dell ambiente di sviluppo 4 1.3 Scaricamento di Apache 6 1.4 Installazione

Dettagli

Laboratorio di reti II: PHP

Laboratorio di reti II: PHP Laboratorio di reti II: PHP Stefano Brocchi brocchi@dsi.unifi.it 2 marzo, 2009 Stefano Brocchi Laboratorio di reti II: PHP 2 marzo, 2009 1 / 55 Il PHP Il PHP è un linguaggio di scripting che si può inserire

Dettagli

Basi di Dati. Programmazione e gestione di sistemi telematici

Basi di Dati. Programmazione e gestione di sistemi telematici Basi di Dati. Programmazione e gestione di sistemi telematici Coordinatore: Prof. Paolo Nesi Docenti: Prof. Paolo Nesi Dr.sa Michela Paolucci Dr. Emanuele Bellini Php: come nasce Il World Wide Web è stato

Dettagli

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti Nascita di Java L uscita di Java, verso la metà degli anni novanta, fu accolta con molto entusiasmo dalla comunità dei programmatori e dei provider di servizi internet perché permetteva agli utenti del

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag