Download
php php hypertext preprocessor n.
Skip this Video
Loading SlideShow in 5 Seconds..
PHP PHP Hypertext Preprocessor PowerPoint Presentation
Download Presentation
PHP PHP Hypertext Preprocessor

PHP PHP Hypertext Preprocessor

114 Views Download Presentation
Download Presentation

PHP PHP Hypertext Preprocessor

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. PHPPHP Hypertext Preprocessor Programmazione lato server

  2. Building applications “… While many sites act as simple repositories, providing users with a collection of files they can retrieve and navigate through with hyperlinks, web sites are capable of much more sophisticated interactions. Sites can collect informations from users through forms, customize their appearance and their content to reflect the interests of particular users, or let the users interact with a variety of information sources…”

  3. Cosa vediamo…

  4. Cosa vediamo… web server Comunicazione HTTP Apache Logica applicativa PHP Data source MySQL

  5. Cosa vediamo…

  6. Architettura 3-tier (dal sito Microsoft)

  7. Apache • È un web server. • Parla e capisce il protocollo http. • Primo web server, sviluppato da Tim Berners-Lee presso il CERN. • Predecessore di Apache: NCSA httpd server (1995).

  8. PHP • Open-source server-side scripting language sviluppato appositamente per il web. • Il progetto inizia nel 1994 (Rasmus Lerdorf). • Inizialmente PHP = Personal Home Page, poi diventa PHP Hypertext Preprocessor. • 1998: PHP 3. • Versioni correnti: PHP 5.2.11 e PHP 5.3.0.

  9. PHP HTML + JavaScript Un file con codice PHP deve essere salvato in formato solo testo e con estensione .php. PHP HTML + JavaScript PHP

  10. Introduzione a PHP • Linguaggio di scripting per realizzare pagine web dinamiche, il cui contenuto viene generato (dinamicamente) nel momento in cui queste vengono richieste al web server. • Script PHP: pagina HTML nella quale viene inserito il codice • PHP viene descritto come “HTML-embedded”. • Il codice PHP viene eseguito sul server prima che la pagina venga inviata al browser, che vedrà solo il risultato finale.

  11. Introduzione a PHP: esempio “Ciao mondo!” Script PHP: <html> <head><title>Esempio 1</title></head> <body> <?php echo “<h1>Ciao mondo!</h1>”; ?> </body> </html> Pagina inviata al browser: <html> <head><title>Esempio 1</title></head> <body> <h1>Ciao mondo!</h1> </body> </html>

  12. Introduzione a PHP: come si inserisce il codice? • Stile abbreviato <? codice PHP qui ?> • Stile classico <?php codice PHP qui ?> • Stile Microsoft ASP <% codice PHP qui %> • Alternativa (utile con gli editor HTML visuali, come Front Page, che potrebbero non tollerare gli altri tipi di sintassi) <SCRIPT LANGUAGE=“php”> codice PHP qui </SCRIPT>

  13. Introduzione a PHP: come si inserisce il codice? • Le istruzioni devono essere separate tra loro dal ; • Commenti • //questo è un commento • /*questo è un commento */ • #questo è un commento

  14. Le funzioni fondamentali: sintassi per le funzioni • La sintassi per richiamare una funzione è la seguente: nome_funzione(valore1, valore2,…); • È possibile che alcune funzioni non necessitino di alcun parametro. In questo caso, vanno comunque indicate le parentesi tonde.

  15. Le funzioni fondamentali: phpinfo( ) • phpinfo(): genera dinamicamente una pagina contenente informazioni sulla versione di PHP installata e altre cosette, quali i nomi delle variabili predefinite. <html> <head><title>phpinfo()</title></head> <body> <?php phpinfo( ); ?> </body> </html>

  16. Le funzioni fondamentali: echo • echo: serve per scrivere l’output che viene inviato al browser che accede allo script. • Non si tratta propriamente di una funzione, bensì di un costrutto del linguaggio; per questo non si usano le parentesi tonde. <html> <head><title>echo</title></head> <body> <?php echo “<h1>Benvenuto!</h1>”; ?> </body> </html>

  17. Le funzioni fondamentali: echo • Grazie a echo si può visualizzare il contenuto delle variabili. <html> <head><title>echo</title></head> <body> <?php echo “Benvenuto su ” . $_SERVER[“HTTP_HOST”]; ?> </body> </html> • $_SERVER[“HTTP_HOST”]: variabile contenente il nome di dominio del sito su cui lo script viene eseguito.

  18. Le funzioni fondamentali: exit( ) e die( ) • exit() e die(): arrestano l’esecuzione dello script; die() consente anche di stampare un messaggio. Tali funzioni possono essere utilizzate per gestire eventuali situazioni di errore che non consentono la prosecuzione dello script. <html> <head><title>exit</title></head> <body> <? exit( ); ?> <p>Questa frase non si vedrà</p> </body> </html>

  19. Le funzioni fondamentali: esempi • Nell’esempio seguente controlliamo il valore della variabile $n e mostriamo un messaggio di errore, bloccando l’esecuzione del programma, se tale variabile è maggiore di 1. <html> <head><title>die</title></head> <body> <? $n=5; if ($n>1) die(“<h1>$n è maggiore di uno!!!</h1>”); echo “<h1>$n è minore o uguale a uno!</h1>”; ?> </body> </html> Vedere cosa succede sostituendo $n=5 con $n=1.

  20. Variabili e tipi di dato: sintassi delle variabili • I nomi delle variabili sono prefissati dal simbolo $ • Esempio: $a = $b + $c serve per assegnare alla variabile a la somma dei valori delle variabili b e c. Il simbolo = è l’operatore di assegnazione. • In PHP, per creare una variabile, è sufficiente assegnarle un valore. Le variabili, cioè, non vanno dichiarate esplicitamente. • Per visualizzare il valore di una variabile, come già visto, si usa echo.

  21. Variabili e tipi di dato: sintassi delle costanti • Il formato per assegnare il valore ad una costante è: define(“nome_costante”,”il valore che si intende dare”); • Esempio: define(“FILM”,”Codice d’onore”); define(“TIPOFILM”,” è un dramma nell’ambito della giustizia militare.”); • Per visualizzare una costante in uno script si usa echo e l’operatore di concatenazione: echo “Il film ”.FILM.TIPOFILM; • L’operatore . è l’operatore di concatenazione.

  22. Operatori (I) • Operatori aritmetici • +: addizione ($a + $b). • -: sottrazione ($a - $b). • : moltiplicazione ($a  $b). • /: divisione ($a / $b). • %: modulo ($a % $b). • Operatori di confronto • ==: uguale ($a == $b). • ===: identico ($a === $b) (cioè $a e $b sono anche dello stesso tipo). • !=: diverso ($a != $b). • <>: diverso ($a <> $b). • <: minore di ($a < $b). • <=: minore o uguale di ($a <= $b).

  23. Operatori (II) • Operatori logici • !: NON (!$b: rende vero se $b è falso e viceversa). • &&: E ($a && $b: rende vero se $a e $b sono entrambe vere; altrimenti falso). • ||: O ($a || $b: rende vero se $a oppure $b è vera; altrimenti falso). • xor: O esclusivo ($a xor $b: rende vero se i valori di verità di $a e $b sono diversi; altrimenti falso). • Operatore ternario • condition ? “value if true” : “value if false” ($grade > 50 ? “Passed” : “Failed”); • L’espressione assumerà valore “Passed” o “Failed” a seconda del valore della variabile $grade. • Operatore di assegnazione: =

  24. Operatori (III) • Operatori combinati • +=: $a += 5: aggiungi 5 ad $a e assegna il risultato ad $a stessa. • -=: $a -= 5: togli 5 ad $a e assegna il risultato ad $a stessa. • /=:$a /= 5: dividi $a per 5 e assegna il risultato ad $a stessa. • Operatore di incremento e decremento • ++$a: aggiunge 1 alla variabile $a poi ne restituisce il valore. • $a++: restituisce il valore originario quindi vi aggiunge 1. • Analogamente per gli operatori --$a e $a--. • Questi operatori vengono spesso utilizzati per i contatori all’interno di cicli ($contatore += 10, $contatore++).

  25. Esempi • <?php $costo_televisore=“500”; $costo_televisore+=“15”; echo “Ehi! Grande occasione per le TV, costano solo $costo_televisore, spedizione inclusa! Ordina subito!”; ?> Risultato nel browser: Ehi! Grande occasione per le TV, costano solo 515, spedizione inclusa! Ordina subito!” • $contatore=0; $contatore=10 echo $contatore++; echo --$contatore; echo “<br>”; echo “<br>”; echo $contatore; echo $contatore Risultato nel browser: 0 Risultato nel browser: 9 1 9

  26. Variabili e tipi di dato: variabili predefinite • Sono variabili il cui valore è preimpostato, che contengono solitamente informazioni sull’ambiente di esecuzione dello script PHP. • $_SERVER[“PHP_SELF”]: contiene il percorso dello script in esecuzione (ad es., se lo script è raggiungibile dall’indirizzo http://localhost/index.php3, $_SERVER[“PHP_SELF”] conterrà il valore /index.php3). • $_SERVER[“HTTP_HOST”]: contiene il nome del server su cui lo script viene eseguito (nel caso precedente, localhost). • $_SERVER[“REMOTE_PORT”]: fornisce la porta utilizzata sul computer dell’utente per comunicare con il server web. • $_SERVER[“REMOTE_ADDR”]: fornisce l’indirizzo IP del visitatore. • Usare la funzione phpinfo( ) per visualizzare l’elenco completo delle variabili predefinite.

  27. Variabili e tipi di dato: tipi di dato • I tipi di dato in PHP si suddividono in tipi scalari e tipi compositi. • Tipi scalari: numeri (interi e in virgola mobile), stringhe, valori booleani. • Tipi compositi: array, oggetti.

  28. Variabili e tipi di dato: esempi // $b è una variabile di tipo booleano $b = TRUE; // $num è una variabile di tipo intero $num = 25; // $pi_greco è un numero in virgola mobile // si noti il punto (virgola decimale) $pi_greco = 3.14; //$messaggio è una stringa $messaggio = “Ciao a tutti!”;

  29. Variabili e tipi di dato: array • In PHP un array può essere tanto un vettore (struttura dati in cui ogni elemento è individuato da un valore numerico) quanto un array associativo (collezione di coppie nome/valore). • array( ): per costruire esplicitamente un array. • È anche possibile costruire un array in modo implicito.

  30. Variabili e tipi di dato: esempi di array // array di numeri interi costruito esplicitamente utilizzando array() $primi = array(2,3,5,7,11); // array costruito implicitamente $pari[0] = 2; $pari[1] = 4; $pari[2] = 6; // array associativo $bookmark[“univ”] = “www.unifi.it”; $bookmark[“dip”] = “www.dsi.unifi.it”;

  31. Variabili e tipi di dato: come accedere agli elementi di un array • Utilizzare il corrispondente indice numerico, oppure il nome della componente (se si tratta di un array associativo) echo $primi[3]; echo $bookmark[“dip”]; • In PHP un array può contenere anche elementi di tipo diverso $mix = array(1,”ciao”,3.14,array(1,2,3));

  32. Manipolazione delle stringhe • In PHP esistono diverse funzioni predefinite per effettuare moltissime operazioni sulle stringhe di testo. • substr: consente di estrarre una sottostringa. La sintassi è: • substr(stringa,inizio,fine); ove stringa indica la stringa di partenza, inizio è il carattere di partenza per estrarre la sottostringa e fine quello in cui termina la sottostringa. L’argomento fine è opzionale: se non indicato, il carattere finale della sottostringa sarà il carattere finale della stringa stessa. • <?php $protagonista=“Bruce Willis”; $nome=substr($protagonista,0,5); $cognome=substr($protagonista,6); echo “Il nome è: $nome, il cognome è: $cognome”; ?>

  33. Manipolazione delle stringhe • strlen(stringa): restituisce la lunghezza della stringa stringa come numero intero. • trim(stringa): elimina gli spazi dalla stringa stringa. • ucfirst(stringa):rende maiuscola l’iniziale di stringa. • ucwords(stringa): rende maiuscole tutte le iniziali delle parole di stringa.

  34. Manipolazione delle stringhe • strpos(stringa,pattern): cerca la prima occorrenza di pattern in stringa e restituisce il carattere in cui compare. • strrpos(stringa,pattern): cerca l’ultima occorrenza di pattern in stringa e restituisce il carattere in cui compare. • str_replace(stringa da cercare,stringa da inserire,stringa):cerca stringa da cercare in stringa e la sostituisce con stringa da inserire. • nl2br(stringa): se stringa è un generico testo, converte tutti gli a capo in <BR> HTML. • urlencode(stringa): converte stringa in modo tale da poterla accodare a un’interrogazione in uno script. • urldecode(stringa): decodifica completamente la stringa di interrogazione URL stringa.

  35. Manipolazione delle stringhe • strrev(stringa): restituisce stringa invertita. • str_word_count(stringa,modalità): effettua alcuni conteggi (e non solo) su stringa: se modalità non è specificata, conta le parole di stringa; se modalità=1, restituisce un array contenente tutte le parole di stringa; se modalità=2, restituisce un array associativo ove il nome della componente è la posizione numerica della parola in stringa e il valore è la parola stessa. • explode(separatore,stringa): crea un array di elementi partendo dalle parti di stringa divise dal carattere separatore. • implode(separatore,array): crea una stringa partendo dagli elementi di array divisi da separatore. • Esistono numerose altre funzioni per la manipolazione di stringhe, che possono essere trovate su ogni buon manuale.

  36. Form HTML: sintassi dei form • Un form HTML è una finestra contenente vari elementi di controllo che consentono al visitatore di inserire informazioni. • Una volta inseriti, i dati vengono inviati ad uno script che li elabora. • Sintassi: <form action=“[URL dello script]” method=“[GET o POST]”> <input type=“[elemento di controllo]” name=“[nome]” …> <input type=“[elemento di controllo]” name=“[nome]” …> … </form>

  37. Form HTML: sintassi dei form • L’attributo action serve per specificare l’URL dello script. • L’attributo method serve per specificare la modalità di invio delle informazioni. Può essere GET o POST. Con GET le informazioni vengono inserite nell’indirizzo URL, dunque sono visibili nella barra degli indirizzi del browser, ma sono vincolate dalla lunghezza massima di un URL, che è di 256 caratteri. Con POST i dati vengono scritti sullo “standard input” dell’applicazione destinataria, dunque non sono visibili ma soprattutto non ci sono limiti sulla quantità di dati inviata. • Si può accedere alle informazioni inviate anche utilizzando gli array superglobali $_GET e $_POST (a seconda del metodo usato).

  38. Form HTML: elementi di controllo (I) • Pulsante d’invio: SUBMIT. L’attributo ‘Value’ (opzionale) specifica il testo personalizzato da visualizzare all’interno del pulsante. • Pulsante per la cancellazione delle informazioni inserite: RESET. L’attributo ‘Value’ è come sopra. • Campi di testo per l’immissione di singole linee di testo all’interno di appositi riquadri: TEXT. L’attributo ‘Name’ serve per dare il nome al controllo; ‘Size’ serve per determinare la dimensione del campo in caratteri (es.: size=“30”). Altri controlli per l’immissione di testo sono PASSWORD (i caratteri sono rimpiazzati sullo schermo da asterischi) e HIDDEN (per la creazione di un campo di testo nascosto, a volte utilizzato per passare informazioni da un form a un altro). • Per l’immissione di testo su più righe, si può utilizzare TEXTAREA: <TEXTAREA NAME=“miei commenti” ROWS=“10” COLS=“40”> </TEXTAREA>

  39. Form HTML: elementi di controllo (II) • Caselle di selezione che consentano all’utente selezioni multiple all’interno di un form: CHECKBOX. L’attributo ‘Name’ serve per dare un nome al singolo elemento di selezione all’interno del controllo, mentre l’attributo ‘Value’ specifica il valore assunto dalla variabile relativa quando la casella viene selezionata. • Inserendo alla fine la parola CHECKED, il browser selezionerà inizialmente la casella in modo automatico. • Esempio: <INPUT TYPE=“CHECKBOX” NAME=“arancia” VALUE=“Succo d’arancia”>Succo d’arancia <INPUT TYPE=“CHECKBOX” NAME=“cola” VALUE=“Coca-Cola”>Coca-Cola <INPUT TYPE=“CHECKBOX” NAME=“pompelmo” VALUE=“Succo di pompelmo” CHECKED>Succo di pomplemo

  40. Form HTML: elementi di controllo (III) • Pulsanti radio per la selezione di un solo elemento all’interno di un gruppo: RADIO. • A differenza del controllo CHECKBOX, il nome di tutte le caselle di un controllo RADIO deve essere sempre lo stesso. • I menu di selezione permettono una o più selezioni a partire da un elenco: SELECT. • Esempio: <SELECT NAME=“giorno_settimana”> <OPTION>Lunedì <OPTION>Martedì <OPTION>Mercoledì <OPTION>Giovedì <OPTION>Venerdì </SELECT> • Per avere selezioni multiple all’interno di un menu di selezione, si usa la seguente sintassi: <SELECT NAME=“giorno_settimana[]” multiple>

  41. Form HTML: esempio • Semplice esempio di form HTML: <form action=“/scripts/elabora.php” method=“get”> <input type=“text” name=“campione”> <input type=“submit” name=“Invia” value=“Invia i dati”> </form> • Scrivendo “Schumacher” nella casella di testo e premendo il pulsante “Invia i dati”, nella barra degli indirizzi verrà visualizzato: http://....../scripts/elabora.php?campione=Schumacher • Nello script ‘elabora.php’ viene definita una variabile di nome $_GET[“campione”] il cui valore è la stringa “Schumacher”.

  42. Form HTML: trasmissione dei dati col metodo GET • Indirizzo URL dello script a cui si vogliono inviare i dati seguito da un punto interrogativo ? seguito dalla ‘query string’ • La struttura della query string consiste di coppie nome/valore separate da &; i caratteri non ammissibili in un indirizzo URL vengono sostituiti da % seguito dal corrispondente codice ASCII (in formato esadecimale; ad es., ‘ì’ diventa ‘%EC’). Gli spazi vengono sostituiti da +. • Il metodo GET si può sfruttare per passare parametri ad uno script PHP. Supponiamo di avere uno script news.php che estrae informazioni da un database; possiamo creare una variabile, da chiamare, ad esempio, $argomento, tramite la quale estrarre il tipo di notizie che più ci interessano: http://....../news.php?argomento=Sport Se l’argomento che ci interessa ha un nome che non sappiamo accodare ad un URL, possiamo usare la funzione urlencode( ).

  43. Un esempio • Creiamo un form contenente un campo di testo, una textarea e due pulsanti, un pulsante di invio e un pulsante di reset. Supponiamo inoltre che lo script di destinazione si chiami ‘decode.php’.

  44. Un esempio <html> <!--form.html--> <body> <form action=“decode.php” method=“get”> Qual è il tuo nome?<input type=“text” name=“nome”> <br><br>Commenti?<br> <textarea name=“miei_commenti” rows=“7” cols=“40”> </textarea> <br> <input type=“submit” value=“Voglio saperne di più!”> <input type=“reset” value=“Cancellami!”> </form> </body> </html>

  45. Un altro esempio • Creiamo un altro form, contenente un campo di testo, un menu di selezione, tre pulsanti radio e i soliti due pulsanti, di invio e di reset. Supponiamo inoltre che, anche in questo caso, lo script di destinazione si chiami ‘decode.php’.

  46. Un altro esempio <html> <!--form2.html--> <body> <center><b>Per favore, scegli un giorno per la consegna e il tipo di pagamento</b></center> <form action=“decode.php” method=“get”> Qual è il tuo nome?<input type=“text” name=“nome_completo”> <br>Quale giorno desideri per la consegna? <select name=“giorno_settimana”> <option>Lunedì <option>Martedì <option>Mercoledì <option>Giovedì <option>Venerdì </select> <br><br>Come vuoi effettuare il pagamento?<br> Assegno<input type=“radio” name=“pagamento” value=“assegno” checked> Carta di credito<input type=“radio” name=“pagamento” value=“carta”> Contanti<input type=“radio” name=“pagamento” value=“contanti”> <br><br><br> <input type=“submit” value=“Inviami ulteriori dettagli!”> <input type=“reset” value=“Cancella!”> </form> </body> </html>

  47. Un altro esempio • Ora costruiamo lo script ‘decode.php’ che elabora il precedente form, dando come risultato per l’utente la seguente pagina web:

  48. Un altro esempio <html> <body> <?php #decode.php echo “Hai inserito le seguenti informazioni…<BR>”; echo “Il tuo nome è: <b>$_GET[nome_completo]</b>.<br>”; echo “Vuoi che la consegna avvenga di <b>$_GET[giorno_settimana]</b>.<br>”; echo “Il pagamento avverrà tramite $_GET[pagamento]</b>.<br>”; ?> <br> <a href=“http://localhost/form2.html”>Torna al form</a> </body> </html>

  49. Dichiarazione di funzioni: sintassi • Ogni programmatore può creare funzioni personali, che normalmente sono di due tipi: funzioni in senso “matematico” o funzioni come mezzo per aggiungere nuovi comandi al linguaggio. • Nella prima accezione, una funzione rappresenta una relazione tra un input e un output. Nella seconda accezione, una funzione rappresenta un modo per raggruppare un blocco di istruzioni PHP affinché possano essere richiamate ed eseguite come se fossero un’unica istruzione. • Sintassi per la dichiarazione di una funzione: function [nome_funzione]([argomenti]){ [corpo-della-funzione] } [nome_funzione]: nome della funzione; [argomenti]: elenco, eventualmente vuoto, di parametri da fornire alla funzione separati da virgole; [corpo-della-funzione]: blocco di istruzioni PHP che implementano la funzione stessa.

  50. Dichiarazione di funzioni: esempio • Dichiarazione di una funzione che somma due numeri: function somma($a,$b){ return $a+$b; } Il costrutto ‘return’ viene utilizzato quando una funzione deve restituire un valore. • Richiamo della funzione ‘somma’: $risultato=somma(1,1); Il risultato della funzione somma calcolata sugli argomenti (1,1) viene assegnato alla variabile $risultato.