Introduzione al PHP. Fig-1 Colloquio Client-Server-PHP. Domenico Nappo Domenico Surace - Manuali.Net Tutti i diritti riservati



Documenti analoghi
Le espressioni regolari.

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Richiesta pagina PHP (es: index.php)

Corso di PHP. Prerequisiti. 1 - Introduzione

4 3 4 = 4 x x x 10 0 aaa

File, Modifica, Visualizza, Strumenti, Messaggio

Convertitori numerici in Excel

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

EXCEL FUNZIONI PRINCIPALI

Introduzione alla programmazione in C

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

MOCA. Modulo Candidatura. [Manuale versione 1.0 marzo 2013]

Manuale Utente Amministrazione Trasparente GA

19. LA PROGRAMMAZIONE LATO SERVER

Guida Joomla. di: Alessandro Rossi, Flavio Copes

Lavorare con MySQL Parte Seconda.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Laboratorio di Informatica

EXCEL PER WINDOWS95. sfruttare le potenzialità di calcolo dei personal computer. Essi si basano su un area di lavoro, detta foglio di lavoro,

LINGUAGGI DI PROGRAMMAZIONE

Innanzitutto andiamo sul sito ed eseguiamo il download del programma cliccando su Download Dropbox.

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

Manuale Utente Albo Pretorio GA

Funzioni in C. Violetta Lonati

NOZIONI BASE SHELL E SCRIPT LINUX

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

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Introduzione al Foglio Elettronico

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

3. Installare Wamp Server

Variabili e tipi di dato

FORMULE: Operatori matematici

COME FARE UNA RICHIESTA DI ASSISTENZA ON LINE (AOL)

Capitolo 4 Pianificazione e Sviluppo di Web Part

Il calendario di Windows Vista

Cimini Simonelli - Testa

Esercizi di JavaScript

Guida informatica per l associazione #IDEA

Javascript: il browser

Database. Si ringrazia Marco Bertini per le slides

Esempi di algoritmi. Lezione III

- Il sito dedicato alle associazioni no-profit di Milano e provincia

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

FPf per Windows 3.1. Guida all uso

Mac Application Manager 1.3 (SOLO PER TIGER)

Una piattaforma per creare blog, che utilizza il linguaggio PHP e si

Guida alla registrazione on-line di un DataLogger

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

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

GESGOLF SMS ONLINE. Manuale per l utente

Strutturazione logica dei dati: i file

Registratori di Cassa

PHP e MySQL. Guida scaricata da

Guida alla configurazione della posta elettronica dell Ateneo di Ferrara sui più comuni programmi di posta

Programmare in Java. Olga Scotti

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

ENTRARE NEL SISTEMA. Clicca su Entra per entrare nel sistema. PAGINA 1

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

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

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

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

MANUALE D USO DELLA PIATTAFORMA ITCMS

MANUALE PER L UTILIZZO DELLA FUNZIONE EVENTI Rel.1.2 del 29 gennaio 2004

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

Compilatore risorse display grafico LCD serie IEC-line

Algoritmi e strutture dati. Codici di Huffman

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

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

Corso di PHP. Prerequisiti. 1 - Introduzione

Struttura di un programma Java

STAMPA DI UNA PAGINA SEMPLICE

Servizio on-line di Analisi e Refertazione Elettrocardiografica

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

INDICE. Accesso al Portale Pag. 2. Nuovo preventivo - Ricerca articoli. Pag. 4. Nuovo preventivo Ordine. Pag. 6. Modificare il preventivo. Pag.

risulta (x) = 1 se x < 0.

Office 2007 Lezione 02. Le operazioni più

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

MANUALE EDICOLA 04.05

Guida all uso di Java Diagrammi ER

Questa guida è realizzata per spiegarvi e semplificarvi l utilizzo del nostro nuovo sito E Commerce dedicato ad Alternatori e Motorini di avviamento.

Software per Helpdesk

SISTEMI DI NUMERAZIONE E CODICI

Dimensione di uno Spazio vettoriale

I sistemi di numerazione

Questa guida vi illustrerà i principali passaggi da eseguire per l'inserimento dei Bandi di gara.

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Amministrazione gruppi (Comunità)

SOMMARIO... 3 INTRODUZIONE...

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Lezione II: Web server e ambiente di lavoro

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

GUIDA ALL USO DEL PORTALE

FtpZone Guida all uso Versione 2.1

COME ELIMINARE PARTI DEL TEMPLATE IN PAGINE SINGOLE

1.0 GUIDA PER L UTENTE

Introduzione al MATLAB c Parte 2

Transcript:

Lezione 1 Introduzione al PHP. Cos è il PHP? Introduzione al PHP. Questa prima lezione sarà puramente introduttiva. Spiegheremo cosa è PHP, quali sono le sue potenzialità, impareremo a configurare la nostra macchina per lavorare con PHP e proveremo il nostro primo script. Cos è il PHP? PHP è un linguaggio di scripting server side HTML embedded. Se siete dei newbies e vi state avvicinando soltanto adesso alla programmazione web, non spaventatevi! Cerchiamo prima di tutto di spiegare quanto detto sopra : PHP è un linguaggio di scripting server side : A differenza dei linguaggi eseguiti lato client, cioè dal browser, come Javascript, PHP viene eseguito sul server, richiamando il modulo apposito che farà da interprete. Altri linguaggi di scripting server side sono il Perl e la piattaforma ASP. Java, invece, è un vero e proprio linguaggio di programmazione e si possono creare siti dinamici utilizzando le servlet e le jsp, separando la presentazione dalla logica dei contenuti. Vedremo che ciò è possibile, con un piccolo sforzo di organizzazione, anche con PHP. Quella che segue (Fig-1), è una rappresentazione semplificata di come avviene un colloquio http per una richiesta di esecuzione di una pagina PHP. Fig-1 Colloquio Client-Server-PHP Come potete osservare, ciò che viene restituito al client è sempre del codice HTML che viene poi renderizzato (permettetemi questo brutto neologismo) dal browser. E compito del server web capire se la richiesta contiene il semplice prelievo di una pagina html statica o l esecuzione di uno script PHP.

Lezione 1 Introduzione al PHP. Perché imparare PHP. PHP è HTML-embedded : A differenza del Perl, le istruzioni PHP vengono inserite all interno del codice HTML :.codice html statico <?PHP print <b>questa frase viene processata dall interprete PHP</b> <br> ;?> altro codice html statico I tag di delimitazione all interno dei quali viene inserito il codice PHP sono <?PHP e?>. Le pagine che contengono codice PHP devono avere (tipicamente) estensione.php. Perché imparare PHP. Molti si chiedono se come linguaggio server side conviene imparare PHP, Perl, Java o la piattaforma ASP di Microsoft. PHP ha molti punti a favore rispetto agli altri linguaggi menzionati. Rispetto alla soluzione ASP, PHP non è un linguaggio proprietario, è Open Source ed è free, oltre ad essere multipiattaforma. Viene praticamente adottato da tutti i fornitori di Hosting che lavorano su piattaforme Linux (e quindi, a parità di prestazioni e di qualità del servizio, offrono prezzi più contenuti). Grazie alla sua caratteristica Open Source, esistono in rete varie risorse professionali di classi e script gratuiti, senza contare tutta la comunità di sviluppatori che gira attorno a questo linguaggio. E meno complesso rispetto al Perl e all architettura J2EE di Java, ma le potenzialità sono le stesse. La sua velocità di esecuzione, l integrazione perfetta con i DBMS più famosi (come MySQL e PostgreSQL) ed il supporto offerto da Apache a questo linguaggio, fanno di PHP la soluzione ottimale per progetti che richiedono rapidità di sviluppo e prestazioni notevoli. Per finire, PHP offre anche l integrazione con gli oggetti (D)COM della Microsoft, con XML, con il linguaggio Java, con Flash della Macromedia, manipolazione di file PDf etc. Insomma, PHP è uno strumento indispensabile per ogni webdeveloper! Prepariamo il nostro ambiente di lavoro : Esistono in rete alcuni tools che permettono l installazione di Apache, MySQL e PHP su una piattaforma Windows in una volta sola.

Lezione 1 Introduzione al PHP. Proviamo il primo script. Noi sceglieremo, come ambiente di sviluppo, un server web molto leggero e veloce : Xitami della Imatix (per scaricare il piccolo file di installazione collegarsi a www.xitami.com ); installeremo i binari di PHP per windows (scaricabili da www.php.net ) ed i binari per il server MySQL (www.mysql.com). Dopo aver installato il server web (ad esempio nella directory c:\xitami ), creiamo una directory c:\xitami\php e decomprimiamo i file in tale directory. Apriamo ora il file php-ini.dist e modifichiamo, nella sezione [session], il parametro session.save_path inserendo un percorso alla directory temporanea di Xitami (c:\xitami\temp ). Dopodiché, copiamo tale file nella cartella c:\windows, rinominandolo php.ini. Altre modifiche da effettuare riguardano il file xitami.cfg. In realtà, bisogna aggiungere la seguente linea nella sezione [filter] del file :.php=c:\xitami\php\php.exe In tal modo, il server web demanderà all interprete php l esecuzione dei file con estensione.php. Prepariamo anche una cartella che conterrà tutti i nostri file di prova : c:\xitami\webpages\test_php. Dopo aver fatto ciò, avviamo il server web, clicchiamo col tasto destro sull iconcina che appare in basso a destra nel systray e scegliamo setup. Si aprirà una pagina del nostro browser preferito, chiedendoci user e password di amministrazione (le abbiamo inserite prima quando abbiamo installato Xitami!). Quando in seguito ci appare il pannello di controllo del server web, clicchiamo su Configuration ed inseriamo nel campo Main HTML directory la nostra directory di lavoro : c:\xitami\webpages\test_php. Dopodiché, clicchiamo sull icona save (in alto a sinistra) e riavviamo il server web. Ultimo passo, installiamo MySQL sulla nostra postazione (è un operazione molto semplice visto che si tratta di un classico file di installazione windows). Proviamo il primo script. Apriamo il nostro editor di testo preferito (se volete un editor che supporti la sintassi PHP ce ne sono molti in rete; io uso ConTEXT e mi trovo benissimo). Scriviamo il seguente codice : <?PHP phpinfo();?> Salviamo il nostro file con il nome test.php nella directory di lavoro (test_php). Quindi, colleghiamoci con il nostro browser all indirizzo http://127.0.0.1/test.php.

Lezione 1 Introduzione al PHP. Proviamo il primo script. Se è tutto a posto, dovrebbe apparirci una lunga tabella contenente le principali informazioni sul nostro ambiente di lavoro! Ecco lo screenshot (Fig-2) che mostra una parte della tabella che dovrebbe essere visualizzata. Fig-2 Il risultato della funzione phpinfo() Altrimenti, rivedete il tutto! Alla prossima! 2002 Powered By Domenico Nappo, Domenico Surace e Manuali.net L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Lezione 2 Le basi del linguaggio. Le basi del linguaggio. I tag di apertura e chiusura. Iniziamo adesso ad apprendere le basi del linguaggio. Anche se partiamo praticamente da zero, nel seguito del corso imparerete ad utilizzare le espressioni regolari, ad implementare un carrello elettronico, a lavorare con i template e via dicendo. I tag di apertura e chiusura. Abbiamo già visto, nei piccoli esempi precedenti della lezione 1, quali sono i tag di apertura e chiusura che contengono il nostro codice PHP. Oltre ai tag <?PHP e?> è possibile utilizzare anche : <??> <% %> (come nelle ASP) <SCRIPT LANGUAGE= php > </SCRIPT> Per il riconoscimento dei tag non standard, bisogna settare le variabili short_open_tag = On e asp_tags = On nel file php.ini. In ogni caso, consiglio di usare i tag standard. I commenti. PHP eredita molte particolarità dal Perl e dalla sintassi C. Ciò è vero anche per i caratteri che identificano le linee di commento. Le linee di commento sono importantissime per un software già mediamente complesso! Si consiglia l uso dei commenti in maniera spassionata, per evitare di riaprire un file dopo due mesi e scoprire che non si capisce nulla del proprio lavoro. Le linee di commento iniziano con i caratteri // o # : //la seguente funzione calcola la somma fra due numeri : function somma(a,b) {... #a questo punto viene restituito il risultato return a+b;... Per inserire interi blocchi di commento, conviene utilizzare i delimitatori /*... */ : /* File carrello.php Autore : Domenico Nappo Data Revisione : 11/12/2001*/

Le prime funzioni PHP. Le prime funzioni PHP. Le prime funzioni che vogliamo subito provare, quando ci mettiamo in testa di imparare un nuovo linguaggio di programmazione, sono quelle di output o stampa a video. Non è un caso se il primo programma di esempio che si trova su tutti i manuali è l immortale Hello World!. Vediamo subito un esempio : <?PHP print Hello World! ;?> All esecuzione di questo script, verrà stampata la scritta Hello World!. Originale eh? Altra funzione di stampa, anzi non è una funzione ma un costrutto di linguaggio, è l istruzione echo... <?PHP echo Stampo tutto su più righe ;?> Possiamo anche usare il carattere speciale \n (new line) nel seguente modo : echo Stampo tutto su\n più righe ; Notate le virgolette doppie, che servono ogni qualvolta ci sono caratteri speciali da interpretare o variabili stringa da interpolare (parleremo più avanti nel corso di questa particolarità). Per inciso, se dovete stampare stringhe statiche (cioè che non contengono variabili da interpolare), meglio usare gli apici singoli, che hanno un esecuzione leggermente più veloce, ma che può risultare sensibile nei casi di script molto complessi e lunghi. Altra funzione interessante è la nl2br(. ). Tale funzione converte tutti i new line (\n) in tag <br>. <?PHP nl2br( Questa stringa\n verrà stampata dal\n browser su più righe );?> Salviamo tale codice nella directory di lavoro. Chiamiamo dal browser questo script ed esaminiamo il codice html restituito. Noteremo dei tag <br> al posto dei \n. HTML e PHP. Vediamo più in particolare come integrare il codice PHP nelle nostre pagine HTML. Si è già detto che i blocchi di istruzioni vanno inserite all interno di opportuni tag (<?PHP?>) e che il file deve avere estensione.php. <html> <head> <title>script PHP di prova</title> </head> <body> <font face= Verdana size= 2 >Font Verdana di dimensione 2</font>

Lezione 2 Le basi del linguaggio. Good Editing Style! <?PHP echo <font face=\ Arial\ size=\ 3\ ><b> Font Arial di dimensione 3 in grassetto</b></font> ;?> </body> </html> Il codice restituito al browser risulterà essere : <html> <head> <title>script PHP di prova</title> </head> <body> <font face= Verdana size= 2 >Font Verdana di dimensione 2</font> <font face= Arial size= 3 ><b> Font Arial di dimensione 3 in grassetto</b></font> </body> </html> Da notare la presenza dei caratteri di escape (\) prima delle doppie virgolette ( ). Infatti, quando c è necessità di mandare in output un carattere che può essere frainteso dall interprete (in questo caso, PHP avrebbe interpretato le doppie virgolette come chiusura dell istruzione echo), bisogna prefissare a tale carattere il simbolo di escape \, dicendo così all interprete che il carattere che seguirà deve essere stampato così com è. Good Editing Style! Terminiamo questa lezione con un paragrafo volto a darvi alcuni (pretenziosi) consigli circa lo stile di scrittura dei vostri script. Ciò che diremo può valere naturalmente per qualsiasi linguaggio di programmazione. E bene programmare sin dall inizio seguendo una certa logica e consistenza, altrimenti vi ritroverete con degli script illeggibili e praticamente inservibili! Prima di tutto, come già è stato detto in questa stessa lezione, bisogna far un largo uso di commenti! Naturalmente questi devono essere significativi, e non devono limitarsi a spiegare cosa fa un istruzione ma piuttosto perché la si fa, perché in quel modo, perché in quel punto! Usate la tabulazione per far rientrare i blocchi di codice all interno di cicli, funzioni, controlli etc. Ad esempio : if (a<>b) { print a è diverso da b ; else { print a è uguale a b ; E sicuramente più leggibile di : if (a<>b) {

Good Editing Style! print a è diverso da b ; else {print a è uguale a b ; Figuratevi con cicli e controlli complessi! Altra cosa importante, usate nomi di variabile esplicativi, e non dei criptici a, b, i, j e k. Forse gli script peseranno qualche byte in meno,ma i vostri colleghi vi ringrazieranno quando avranno a che fare con il vostro codice. Stesso discorso per i nomi di funzione, le costanti (scritte in maiuscolo) ed il nome stesso del file. Siamo giunti al termine della seconda lezione. Ce ne sono tante altre ancora! Seguiteci! 2002 By Domenico Nappo aka WebdoM. L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Le variabili. Lezione 3 Le variabili. Cosa sono le variabili. In questa lezione si parlerà delle variabili, cioè il cuore di ogni applicazione, sia che si tratti di uno script PHP, di un programma gestionale fatto in Visual Basic che di un vecchio programma COBOL del 1980. Cosa sono le variabili. Se queste lezioni sono il vostro primo approccio con un linguaggio (per vostra sfortuna! Siete capitati nelle mani sbagliate ), allora è meglio dirvi che uno degli elementi più importanti della programmazione è la variabile. La definizione classica che si dà di solito è la seguente : Una variabile è una sorta di contenitore identificato da un nome, con al suo interno un valore. In PHP le variabili sono riconoscibili perché iniziano con il simbolo $ : $a, $user, $numero, $45 sono esempi di identificatori corretti per una variabile (anche se l ultimo caso è alquanto raro e soprattutto sconsigliato per non ledere la leggibilità di un programma). I tipi di dati in PHP. Una variabile può contenere, quindi, un valore numerico, una stringa di caratteri, un singolo carattere, un insieme di valori. In PHP, una variabile può cambiare il suo valore (compreso il tipo) in qualsiasi momento. In altri linguaggi (non di scripting) bisogna dichiarare le variabili usate ed il loro tipo. PHP esegue invece delle conversioni forzate di tipo a seconda della situazione. $quantita=15; //contiene un valore numerico $quantita= tanta ; //adesso la variabile contiene una stringa $quantita= 15 ; //è sempre una stringa $totale=$quantita+3 //conversione forzata (casting) ad intero per //effettuare la somma //$totale conterrà il valore 18. //nota : la somma viene effettuata su una copia della variabile. //la variabile resterà di tipo string Notate la particolarità di questo linguaggio. Per chi conosce un po di C/C++, tutto ciò sembrerà un assurdità, visto che il C è un linguaggio fortemente tipizzato e definito in modo tale da evitare errori di programmazione. In effetti, con le comodità offerte dal PHP, si potrebbe incorrere facilmente in errori di programmazione/distrazione, difficilissimi da scovare! Perciò vi consigliamo di stare molto attenti. Pensate però ad un campo quantità proveniente da un modulo HTML. Esso sarà inviato necessariamente come un campo stringa, e non in formato numerico. A questo punto torna comoda la conversione stringa->numero, per poter operare su quell informazione. Dei moduli HTML parleremo più avanti nel corso. Le variabili PHP possono contenere dati del tipo : numero intero (integer) 15 numero reale (double) 3.14 stringa (string) Sono un insieme di caratteri! valore booleano (boolean) true (oppure false)

Variabili scalari e array. Inoltre, una variabile può essere di tipo array o un oggetto (se ne parlerà più avanti!). Variabili scalari e array. Abbiamo visto qualche esempio di variabile scalare (cioè contenente un singolo elemento). Una variabile può essere anche di tipo Array, cioè può contenere un vettore o una matrice. Gli array vengono indicizzati, tramite un numero o una stringa, ed è quindi possibile accedere ad un singolo elemento dell array. Vediamo prima di tutto di definire un array. In PHP esistono vari modi di creare un array : $amici=array( Aldo, Alfonso, Biagio, Carlo ); print $amici[1]; L istruzione print stamperà Alfonso, poiché gli array vengono indicizzati partendo da zero. Altro modo di definire un array è il seguente : $amici[]= Aldo ; $amici[]= Alfonso ; Più avanti nel corso, dedicheremo un intera lezione agli array, visto che nella vostra vita di programmatori li incontrerete molto spesso e risulteranno indispensabili nella maggior parte dei casi. Variabili dinamiche. Parliamo adesso di variabili dinamiche. Esaminiamo il seguente pezzettino di codice : $identificativo= codice ; $$identificativo= 1452 ; Queste due righe equivalgono a $codice= 1452. Strabiliante vero? Per stampare invece : print $$identificativo\n\n ; print ${$identificativo ; La prima riga non stampa il contenuto della variabile $codice ma stampa $codice! Per informare PHP del fatto che si vuole stampare una variabile dinamica, è necessario inserirla fra parentesi graffe. Infatti, la seconda riga di codice stampa 1452. Questa è una piccola magia di PHP. Ci si potrebbe chiedere il perché di questa stranezza. Io posso dirvi, per adesso, che alcuni problemi che sembravano alquanto complicati si sono rivelati di semplice soluzione tramite un uso intelligente delle variabili dinamiche. Inoltre, se vi trovate a lavorare sul codice di sistemi di script complessi, troverete che questa soluzione viene utilizzata in maniera proficua in svariate situazioni.

Lezione 3 Le variabili. Le costanti. Le costanti. Definire una costante all interno di uno script, magari inserendo tutto il nostro set di costanti in un file da includere ogni volta, permette un astrazione maggiore ed una maggior chiarezza e leggibilità. Ad esempio : define( PI_GRECO,3.141); define( E,2.718); In questo modo, abbiamo definito due costanti che possiamo utilizzare all interno dei nostri script, evitando di inserire il valore numerico, riferendoci all astrazione che abbiamo creato. Inoltre, possiamo adottare l uso delle costanti per riferirci a valori speciali. Ad esempio: stiamo curando la gestione di una biblioteca. Invece di riferirci alle riviste con il numero 12 e ai quotidiani con il numero 15, possiamo definire due costanti in questo modo : define( RIVISTA,12); define( QUOTIDIANO,15); Notate l uso delle maiuscole per i nomi di costanti. In PHP esistono anche costanti predefinite come FILE e LINE (due underscore prima e dopo), utili per segnalare il file e la riga corrente in caso di errore. Abbiamo terminato anche questa terza lezione. Alla prossima! 2002 By Domenico Nappo aka WebdoM. L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Gli operatori. Lezione 4 Gli operatori. Operatori aritmetici. In questa lezione illustreremo l uso degli operatori, in modo da essere in grado di manipolare i valori contenuti nelle variabili e capire in seguito esempi un pò più completi. Operatori aritmetici. Analizziamo i principali operatori aritmetici di PHP. A tale scopo, riportiamo una tabellina : Simbolo Cosa fa Esempio con $x=10 e $y=4 Risultato + Somma i due operandi $x+$y 14 - Sottrazione $x-$y 6 * Moltiplica i due operandi $x*$y 40 / Divisione $x/$y 2.5 % Resto divisione intera $x%$y 2 Operatori di assegnazione. Abbiamo già visto l operatore = per assegnare un valore ad una variabile. PHP fornisce anche un insieme di combinazioni di operatori che assegnano un valore alla variabile, modificando in vario modo il valore di destra. Facciamo degli esempi : $x+=3; Equivale a scrivere : $x=$x+3; Analogo discorso per gli operatori /=,-=,*=,%=. Utile è l operatore di concatenazione di stringhe : $messaggio= Il cliente Mario Rossi ha comprato i seguenti articoli :\n ; $messaggio.= Tappeto persiano codice T135 ; Ci sono poi li operatori incrementali e decrementali, molto utili per alleggerire le istruzioni : $x=10; $x++; //$x contiene 11 $x++ equivale a $x=$x+1 $x--; //$x contiene 10 $x-- equivale a $x=$x-1 Bisogna precisare però che in questo caso, la variabile viene memorizzata (in un eventuale variabile a sinistra) e poi incrementata. Infatti, $y=$x++; Con questa istruzione, la variabile $y conterrà il valore di $x prima dell incremento. Per ovviare a ciò bisognerebbe scrivere nel seguente modo :

Operatori di confronto e operatori logici. $y=++$x; Operatori di confronto e operatori logici. Il controllo sulle variabili sono importanti per determinare l azione da intraprendere in base ai valori contenuti (tramite istruzioni if, while etc. che vedremo nella prossima lezione). Ogni operazione di confronto restituisce un valore booleano: true o false, cioè falso o vero. Di solito le operazioni di confronto sono legate fra loro da operatori logici (AND, OR e NOT), per ottenere delle espressioni booleane più complesse. Si osservi attentamente la seguente tabella : Operatore Significato Esempio con $x=10 Valore booleano restituito == Uguale a $x==4 FALSE!= Diverso da $x!=10 FALSE > Maggiore di $x>9 TRUE >= Maggiore o uguale a $x>=10 TRUE < Minore di $x<8 FALSE <= Minore o uguale a $x<=9 TRUE Le seguenti tabelle descrivono la logica degli operatori booleani : Operatore! (not) Risultato Esempio con $x=10 FALSE TRUE!($x>10) TRUE TRUE FALSE!($x==10) FALSE Operatore && (and) 1 operando 2 operando Risultato Esempio con $x=10 FALSE FALSE FALSE ($x>15)&&($x!=10) FALSE FALSE TRUE FALSE ($x>12)&&($x<15) FALSE TRUE FALSE FALSE ($x<15)&&($x>10) FALSE TRUE TRUE TRUE ($x<15)&&($x>=10) TRUE Operatore (or) 1 operando 2 operando Risultato Esempio con $x=10 FALSE FALSE FALSE ($x>15) ($x!=10) FALSE FALSE TRUE TRUE ($x>15) ($x<12) TRUE TRUE FALSE TRUE ($x<12) ($x>10) TRUE TRUE TRUE TRUE ($x<15) ($x>=10) TRUE

Lezione 4 Gli operatori. Priorità fra gli operatori. Priorità fra gli operatori. E sempre bene sapere come funziona la priorità fra gli operatori visti in precedenza, ma consigliamo vivamente di mettere fra le parentesi tonde tutto ciò che costituisce un atomo di espressione, sempre per la solita questione della leggibilità. Ecco gli operatori in ordine di precedenza : / * % + - < <= > >= ==!= && Quindi : 10*4+12-6/3 restituisce 50. Meglio scrivere, però, (10*4)+12-(6/3). O, se queste non sono le vostre intenzioni, (10*(4+12)-6)/3, il cui risultato sarà 51.333333 Per quanto riguarda la priorità fra gli operatori logici, basta tener conto che l and (&&) ha precedenza rispetto all or ( ). 2002 By Domenico Nappo aka WebdoM. L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Lezione 5 Il flusso di elaborazione. Il flusso di elaborazione. Questa è l ultima lezione riguardante le basi del PHP (comuni in gran parte a tutti gli altri linguaggi di programmazione e di scripting). Dopo tale lezione, potete davvero iniziare a fare qualcosa di serio! Istruzione if. Sintassi : if (espressione) { istruzioni L istruzione if è molto semplice : analizza l espressione booleana fra parentesi. Se il risultato di questa espressione è TRUE, esegue l istruzione immediatamente successiva (che può essere anche un blocco di istruzioni racchiuse fra parentesi graffe). Se l espressione risulta essere FALSE, ignora semplicemente tale istruzione. If (($x>=0) && ($x<3)) { print $x è contenuto nell intervallo [0-3) ; Clausola else con if. Se si vogliono eseguire istruzioni soltanto se l if non è verificato, dobbiamo utilizzare la clausola else nel seguente modo : sintassi : if (espressione) { istruzioni else { altre istruzioni Ad esempio : If (($x>=0) && ($x<3)) { print $x è contenuto nell intervallo [0-3) ; else { print $x non è contenuto nell intervallo [0-3) ;

Clausola elseif. Se non avessimo utilizzato l else, la seconda chiamata alla funzione print sarebbe stata eseguita in ogni caso. Clausola elseif. Tramite l utilizzo combinato di if, elseif e else, è possibile eseguire controlli diversi ed eseguire un blocco di istruzioni di default : sintassi: if (espressione) { istruzioni elseif (altra espressione) { altre istruzioni else { istruzioni da eseguire nei casi non previsti Ad esempio : If (($x>=0) && ($x<3)) { print $x è contenuto nell intervallo [0-3) ; elseif (($x>=3) && ($<6)) { print $x è contenuto nell intervallo [3-6) ; else { print $x non è contenuto in nessuno degli intervalli previsti ; Istruzione switch. Tramite l istruzione switch si può eseguire un blocco di codice per ogni risultato previsto da una espressione (che non deve essere necessariamente booleana) : sintassi : switch (espressione) { case risultato1: istruzioni da eseguire se si ha risultato 1 break; case risultato2: istruzioni da eseguire se si ha risultato 2 break;

Lezione 5 Il flusso di elaborazione. default : istruzioni da eseguire in tutti gli altri casi Un semplice esempio : <?PHP $utente= Mario ; switch ($utente) { case Giorgio : print Salve Giorgio. ; break; case Lino : print Salve Lino. ; break; default : echo Utente inesistente. Si prega di contattare l amministratore di sistema. ;?> In questo caso quindi, lo script stamperà a video il messaggio di utente inesistente. Tanto per dare un idea, se volessimo implementare gli stessi controlli tramite combinazioni di if,elseif ed else : <?PHP $utente= Mario ; if ($utente== Giorgio ) { print Salve Giorgio. ; elseif ($utente== Lino ) { print Salve Lino. ; else { print Utente non riconosciuto. ;?> Istruzione while. Sintassi : while (espressione) {.istruzioni Tale istruzione esegue il blocco di codice mentre (while) l espressione risulta TRUE. Quindi, per evitare un ciclo infinito, nel blocco ci sarà un istruzione che provvederà a modificare le variabili

Istruzione do while. che entrano in gioco nell espressione, fino a che questa non sarà valutata FALSE e quindi il flusso del programma passerà alle istruzioni successive al while. Vediamo un semplice esempio : $risultati=array(12,45,22,43,66,0); $i=0; while ($risultati[i]) { print \$risultati[$i] vale $risultati[$i] \n\n ; $i++; Tale ciclo termina quando si arriva all ultimo elemento dell array, poiché l espressione viene valutata FALSE. Istruzione do while. E simile al while, ma il codice viene eseguito prima della valutazione dell espressione. In alcuni casi può essere comodo usare do..while anziché il while. Sintassi : do {.istruzioni while (espressione); Ciclo for. Sintassi : for (assegnazione; test; incremento) { istruzioni E utilissimo usare un ciclo for quando sappiamo perfettamente quante volte bisogna eseguire il blocco di istruzioni. Ad esempio : $risultati=array(12,45,22,43,66); $quante_volte=count($risultati); for ($i=0;$contatore<=$quante_volte;$i++) { print \$risultati[$i] vale $risultati[$i] \n\n ;

Lezione 5 Il flusso di elaborazione. La funzione count($array) restituisce il numero di elementi presenti nell array. 2002 By Domenico Nappo aka WebdoM. L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Lezione 6 Lavorare con gli Array. Lavorare con gli Array. Questa lezione sarà una delle più importanti del corso. Cercheremo di farvi capire come sfruttare in maniera efficiente gli array in PHP e illustreremo le funzioni con cui avrete a che fare più spesso (le funzioni dedicate agli array sono davvero molte!). Definire un array. Abbiamo già visto nelle precedenti lezioni come definire un array. Rivediamole un attimo : $myarray=array( Domenico, Roberto, Stefano ); Definisce un array di tre elementi, indicizzati nel seguente modo : $myarray[0] contiene Domenico $myarray[1] Roberto $myarray[2] Stefano Avremmo potuto definire l array precedente anche nel seguente modo : $myarray[]= Domenico ; $myarray[]= Roberto ; $myarray[]= Stefano ; Altra funzione utile per costruire un array è la funzione explode() : $nomi= Domenico,Roberto,Stefano ; $myarray=explode(,,$nomi); La funzione explode() suddivide una stringa in un array. Alla funzione, oltre alla stringa, viene passato anche il carattere utilizzato come separatore (nel nostro caso una virgola). Array associativi. Se si vuole definire un array ed indicizzarlo in base ad una chiave diversa da un indice numerico, bisogna ricorrere agli array associativi. Facciamo qualche esempio di array associativo e definiamone uno : $myarray[programmatore]= Domenico ; $myarray[designer]= Roberto ; $myarray[commerciale]= Stefano ; Come potete osservare, nel caso in cui bisogna indicizzare in maniera logica un array, gli array associativi tornano molto utili. L esempio precedente mostra una definizione diretta di array associativo. Utilizziamo ora la funzione array() : $myarray=(programmatore=> Domenico,designer=> Roberto,commerciale=> Stefano ); $print $myarray[programmatore]; Il codice di cui sopra dovrebbe stampare la stringa Domenico.

Matrici. Diamo ora un semplice assaggio della potenza di questo tipo di indicizzazione, mostrando anche un paio di funzioni di accesso molto utili. Supponiamo di avere un array associativo contenente gli stipendi stimati per varie categorie di professionisti ed avere a disposizione ancora l array definito precedentemente in maniera associativa. $stipendi=(programmatore=>2800000,designer=>2900000,commerciale=>4500000); $myarray=(programmatore=> Domenico,designer=> Roberto,commerciale=> Stefano ); while (list($funzione,$compenso) = each($stipendi)) { print $myarray[$funzione] ha uno stipendio stimato di $compenso\n\n ; Questo spezzone di codice mostra due funzioni interessanti : list() e each(). La funzione list assegna alle variabili passate come argomento i valori di destra : list($val1,$val2,$val3) = $myarray; L istruzione assegna alle variabili $val1 etc. gli elementi dell array $myarray. Il comando each(), invece, viene spesso abbinato all uso di list(), solitamente in un ciclo. Tale funzione scorre tutti gli elementi dell array datogli come argomento. Se l array è associativo bisogna utilizzare list() e each() nel modo seguente : Sintassi: list($key,$val) = each($array_associativo); Ad ogni passo, $key e $val conterranno rispettivamente la chiave ed il valore degli elementi dell array. Utilizzato in un ciclo while, la funzione restituisce FALSE quando non trova più elementi da scorrere e fa così terminare il ciclo. Nell esempio di sopra, quindi, verranno visualizzate delle stringhe del tipo : Domenico ha uno stipendio stimato di 2800000 Questo per ogni elemento degli array. Infatti, la variabile $funzione contiene, ad ogni iterazione, la chiave usata per indicizzare l array, che sarà del tipo programmatore, designer e commerciale. Grazie ad essa, è possibile accedere al singolo elemento dell array $myarray, il quale usa le stesse chiavi per indicizzare i suoi elementi. Matrici. Fin qui abbiamo trattato array monodimensionali. Alcune volte può tornare utile ricorrere ad array bidimensionali (matrici a due dimensioni) o multidimensionali. Nel caso bidimensionale, ad esempio : $biarray=array(array(1,2),array(12,1),array(23,7)); print $biarray[2][1]; L istruzione print darà come output il numero 7. Un array multidimensionale può contenere anche array associativi ed essere esso stesso un array di tale tipo. A questo punto inutile dirvi che l unica limitazione è la vostra fantasia e la vostra intuizione per adoperare al meglio queste strutture.

Lezione 6 Lavorare con gli Array. Altre funzioni per lavorare con gli array. Le funzioni relative agli array sono circa una cinquantina. Noi analizzeremo quelle, a nostro avviso, più utili e ricorrenti. La funzione count() accetta come parametro un array restituisce il numero degli elementi contenuti in tale array. In PHP4 è stata introdotta la funzione foreach, la quale permette di effettuare un ciclo per scorrere array indicizzati numericamente e in maniera associativa. Per gli array indicizzati numericamente bisogna usare foreach nel seguente modo : sintassi: foreach($myarray as $temp) {...istruzioni... Nella variabile $temp viene memorizzato temporaneamente il valore corrente estratto dall array. $myarray è, ovviamente, l array su cui stiamo lavorando. Per array associativi invece : foreach($myarray as $key=>$value) {...istruzioni... Come potete facilmente intuire, con questa funzione possiamo evitare l uso di list() e each() in un ciclo while per scorrere un array associativo. Infatti, foreach() scorre ogni elemento di un array associativo fino alla fine, estraendo volta per volta le coppie chiave=>valore, memorizzate temporaneamente in due variabili (nell esempio $key e $value). Rivisitando l esempio fatto in precedenza : $stipendi=(programmatore=>2800000,designer=>2900000,commerciale=>4500000); $myarray=(programmatore=> Domenico,designer=> Roberto,commerciale=> Stefano ); foreach($stipendi as $funzione=>$compenso) { print $myarray[$funzione] ha uno stipendio stimato di $compenso\n\n ; Più leggibile di una combinazione while,list e each! In ogni caso, avrete a che fare con del codice scritto in PHP3 o in PHP4 in cui saranno sicuramente presenti cicli di questo genere. Per rimuovere un elemento da un array possiamo usare l ìstruzione unset() : $array=array(1,45,23,22); unset($array[2]); In questo caso l array sarà costituito nel seguente modo : $array[0] $array[1]

Altre funzioni per lavorare con gli array. $array[3] Notate come restano indicizzati gli elementi. Infatti, sarebbe possibile definire un array anche nel seguente modo : $array[8]=34; $array[140]=77; Naturalmente è sconsigliato operare in tal modo. In PHP4 è stata introdotta anche un altra funzione molto utile : in_array(), che verifica l esistenza di un dato elemento all interno di un array. La sintassi è la seguente : Sintassi: in_array($elemento,$array) Essa restituisce un valore booleano (FALSE o TRUE), a seconda o meno dell esistenza dell elemento nell array indicato. Tramite le funzioni sort(), rsort(), asort() e ksort() è possibile ordinare array indicizzati numericamente ed associativamente. sort($array) viene utilizzata con array indicizzati numericamente e restituisce lo stesso array ma ordinato (alfabeticamente o numericamente a seconda del tipo di dati degli elementi dell array). La funzione rsort($array), invece, effettua un ordinamento invertito rispetto alla sua funzione gemella. Per ordinare gli array associativi abbiamo due funzioni : asort($array) e ksort($array). La prima ordina un array associativo per valore, mentre ksort($array) ordina un array associativo per chiave. Esistono anche qui le controparti che effettuano un ordinamento invertito (arsort() e krsort() ). Per ordinare array multidimensionali esiste la funzione array_multisort(). Più avanti nel corso, avremo occasione di studiare parecchi esempi in cui gli array sono usati in maniera insostituibile! Non perdetevi la prossima lezione sulle stringhe! 2002 By Domenico Nappo aka WebdoM. L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Lezione 7 Lavorare con le stringhe. Lavorare con le stringhe. Uno degli aspetti che dona a PHP tanta popolarità è la sua capacità di manipolazione di stringhe. Dal manuale ufficiale PHP contiamo più di 60 funzioni dedicate alle stringhe! Anche questa volta, cercheremo di concentrarci su quelle che probabilmente vi serviranno più di frequente rispetto ad altre, fornendo esempi utili che potrete riutilizzare nei vostri script. Formattazione. Tramite le funzioni printf() e sprintf() è possibile visualizzare i nostri dati secondo formati specifici. Se i dati che stiamo trattando sono numerici possiamo visualizzarli (convertendoli) in base binaria, base decimale, base esadecimale, definire la precisione (il numero di cifre decimali) di un numero Se i dati sono stringhe alfanumeriche possiamo definire la larghezza di un campo, inserire spazi di riempimento, disegnare box con poche istruzioni Tutto ciò sarà chiaro osservando i prossimi esempi proposti : $mynumber=18; $printf( Decimale : %d\n,$mynumber); Il risultato nel browser sarà semplicemente la stampa del numero in formato decimale. Volendo visualizzare il numero in diversi formati, dobbiamo sostituire la specifica di tipo d con i seguenti caratteri : Specifica di tipo Formato D Decimale B Binario C ASCII F Floating Point O Ottale S Stringa X Esadecimale (minuscolo) X Esadecimale (maiuscolo) printf() può stampare più dati in una sola istruzione : $printf( Decimale : %d<br> Esadecimale: %X, $mynumber, $mynumber); Vediamo come visualizzare i nostri dati numerici non interi con un numero prefissato di cifre dopo la virgola : $lire=540000; $euro=$lire/1936.27; printf("%.2f",$euro); Con la specifica %.2f diciamo alla funzione printf() di effettuare un arrotondamento alla seconda cifra decimale. Infatti, il risultato visualizzato sarà 278.89.

Lezione 7: Lavorare con le stringhe La seguente tabelle riassume i vari tipi di specifica che possiamo utilizzare in printf() : Nome specifica Descrizione Esempio Specifica di tipo Determina il formato ed il tipo d dei dati da visualizzare. Specifica di precisione Numero di cifre decimali a cui.2 arrotondare un numero non intero Specifica di riempimento Determina caratteri di 04d riempimento e larghezza minima dell output Specifica di larghezza di campo Larghezza del campo in cui si vuole visualizzare l output 20 Vediamo un esempio per la specifica di riempimento : printf( %06d,250); Stampa 000250. Infatti il numero occupa meno spazi di quelli previsti; i restanti vengono riempiti con il carattere 0. Se si vuole utilizzare un altro carattere, diverso dallo 0 e dallo spazio, bisogna anteporre al carattere voluto un apice : printf( % #6d,250); Stampa ###250. Per quanto riguarda le specifiche di riempimento : printf( %-15s%15s, Professione, Compenso ); La specifica %-15s stampa la stringa Professione in un campo di 15 caratteri con allineamento a sinistra. %15s stampa Compenso con allineamento a destra. Le specifiche di riempimento sono molto utili quando si vogliono stampare più righe in maniera ordinata, in campi della stessa larghezza appunto. Infatti, un altra istruzione simile, con le stesse specifiche di riempimento, produrrà la stampa alla riga successiva di due stringhe perfettamente allineate con quelle superiori. Come ultimo esempio riportiamo le istruzioni per visualizzare un quadrato in cui viene riportato un messaggio: printf( % -60s+\n, ); printf( %20s, Titolo Box: ); printf( %14s, Messaggio: ); printf( %26s \n, ); printf( % -60s+\n, ); La prima e l ultima istruzione stampano 60 caratteri -. Infatti si è applicata una specifica di riempimento ad una stringa vuota. Funzione sprintf(). Per quanto riguarda la funzione sprintf(), l unica differenza con la printf() è il fatto che questa funzione ritorna il valore, in modo da essere memorizzato in una variabile :

Lezione 7 Lavorare con le stringhe. $linea= sprintf( % -60s+\n, ); print $linea ; Ottenere informazioni sulle stringhe. PHP fornisce molte funzioni utili per l analisi delle stringhe. Elenchiamo le più importanti, mostrando allo stesso tempo qualche semplice esempio. Per conoscere la lunghezza di una stringa, si utilizza la funzione strlen() nel seguente modo : Sintassi: $length=strlen($stringa) Il seguente pezzo di codice controlla che la lunghezza di un nome utente inserito non sia superiore agli otto caratteri : if (strlen($userid) > 8) { $message= Il nome utente non deve superare gli otto caratteri ; else { $message= L userid scelto è stato memorizzato correttamente ; Tramite la funzione substr() si può estrarre un sottoinsieme della stringa in esame : Sintassi : $sub=substr($stringa,$index,$lenght) La variabile $index fornisce l indice del carattere da cui si parte per estrarre la sottostringa, mentre $lenght è il numero di caratteri da estrarre. Se tale parametro viene omesso, la funzione substr() estrae tutti i caratteri fino alla fine partendo da $stringa[$index] (infatti, le stringhe possono essere riviste come array di caratteri). Se $index è negativo, il numero di caratteri da cui partire viene contato dalla fine anziché dall inizio. $stringa= Testing ; print substr($stringa,3). <br> ; print substr($stringa,3,3). <br> ; print substr($stringa,-3). <br> ; L output sarà del tipo : ting tin ing Altra funzione utile è strstr(), che verifica la presenza di una sottostringa all interno di una stringa passata come argomento, restituendo un valore booleano.

Lezione 7: Lavorare con le stringhe if (!strstr($email, @ )) { $message= Non hai inserito un indirizzo email corretto ; La funzione strstr() è case-sensitive, nel senso che fa differenza fra lettere maiuscole e minuscole. Per i casi in cui ciò non è necessario, possiamo utilizzare la funzione stristr(), la quale è case-insensitive. Nota: Nella prossima lezione analizzeremo degli strumenti più potenti per la verifica dell appartenenza di una stringa ad un determinato insieme di stringhe. Manipolazione. Effettuiamo adesso una carrellata delle principale funzioni di manipolazione di stringhe, le quali saranno indispensabili in parecchi casi. $nominativo= Domenico nappo ; print strtoupper($nominativo). <br> ; print strtolower($nominativo). <br> ; print ucwords($nominativo). <br> ; L output sarà il seguente: DOMENICO NAPPO domenico nappo Domenico Nappo La funzione ucfirst() invece, setta a maiuscolo soltanto il primo carattere di una stringa. Per eliminare spazi bianchi in una stringa, PHP mette a disposizione quattro funzioni : o o o o trim() : Rimuove gli spazi all inizio e alla fine della stringa. ltrim(): Rimuove gli spazi soltanto all inizio della stringa. rtrim(): Rimuove gli spazi alla fine. chop() :Identica a rtrim(). La funzione htmlentities() converte tutti i caratteri codificabili in HTML di una stringa : $stringa= By O Neil & GoodWin ; $new=htmlentities($stringa); $new_new=htmlentities($stringa,ent_quotes); Come potete osservare, la funzione accetta un parametro opzionale. Le variabili $new e $new_new conterranno : $new contiene By O Neil & GoodWin $new_new contiene By O&#039;Neil & GoodWin Una funzione importantissima è la str_replace(), che effettua una sostituzione di testo. Sintassi: $string_replaced=str_replace($old.$new,$string);

Lezione 7 Lavorare con le stringhe. Immaginiamo di gestire un catalogo online. Per ogni prodotto abbiamo a disposizione due foto, una in formato mini e l altra ad una grandezza maggiore, che permette di osservare i dettagli a chi è interessato. Nel database memorizziamo soltanto le immagini nella forma immagini/prodotto_mini.jpg. Le immagini a grandezza maggiore si trovano nella stessa cartella e sono nominate come prodotto.jpg. Osserviamo il seguente codice : $immagine= telefonini/nokia3330_mini.jpg ; echo <a href=\ immagine.php?img=$immagine\ target=\ _blank\ ><img src=\ $immagine\ ></a> ; Nel file immagine.php sarà presente il seguente codice : <?PHP // ingrandisci immagine $big_image=str_replace("_mini.jpg",".jpg",$img); echo" <HTML><HEAD><TITLE>Telefonino</TITLE></HEAD> <BODY> <img src=\"$big_image\"> </BODY></HTML>";?> L istruzione $big_image=str_replace("_mini.jpg",".jpg",$img) memorizza nella variabile $big_image la stringa telefonini/nokia_3310.jpg. Notate nel codice precedente in che modo viene passata la variabile $immagine al file immagine.php. <a href=\ immagine.php?img=$immagine\ target=\ _blank\ > Il testo dopo? identifica una querystring. Tale querystring consta di coppie nome=valore. Il nome img sarà la variabile $img nello script a cui è stata passata la variabile, e conterrà il valore passato (in questo caso il contenuto di $immagine). E bene prendere familiarità con questo tipo di operazioni, poiché fanno parte dell essenza della programmazione web lato server. Nella prossima lezione parleremo delle espressioni regolari! Cosa sono e a che servono? Boh! 2002 By Domenico Nappo aka WebdoM. L autore declina ogni responsabilità per eventuali (quanto improbabili) danni recati al sistema per l uso degli script di esempio riportati in questa guida.

Lezione 8 Le espressioni regolari. Le espressioni regolari. Corrispondenze e classi di caratteri. Le regular expressions (espressioni regolari) servono per descrivere dei modelli di stringa. E possibile verificare, ad esempio, se un codice fiscale o un indirizzo email sono stati inseriti correttamente. Infatti, le funzioni viste la volta scorsa non sono molto flessibile e potenti come lo strumento che vedremo in questa lezione. E bene dire però, che l uso delle espressioni regolari porta un sensibile overhead di esecuzione; quindi, dove è possibile usare le funzioni dedicate alle stringhe è inutile utilizzare le espressioni regolari, che portano un aumento del tempo di esecuzione. PHP supporta sia le espressioni regolari che seguono lo standard POSIX sia quelle stile Perl (Perl regular expressions). Noi ci occuperemo del primo gruppo. Daremo comunque un cenno anche alle espressioni regolari Perl, più complicate da apprendere ma anche più potenti. Corrispondenze e classi di caratteri. Con la funzione ereg() si possono intercettare le corrispondenze di modelli nelle stringhe. La sintassi della funzione è la seguente : Sintassi: $res = ereg( modello,$stringa,$array); La funzione ereg() restituisce il numero di caratteri trovati nelle corrispondenze e memorizza in $array le corrispondenze trovate nella variabile $stringa, in base al modello usato. La difficoltà nell uso delle espressioni regolari sta proprio nel capire la sintassi dei modelli. Essi possono essere semplici caratteri, contenere quantificatori, classi di caratteri. Ad esempio : $num=ereg( gio, ciao Gigio,$array); print $num. ---.$array[0]; L output sarà 3---gio. Per apprezzare però le qualità delle regular expressions si osservi attentamente la seguente tabella : Simbolo Funzione Esempio. Qualsiasi carattere g. successivo.? Nessuna o una istanza del g? carattere. * Nessuna o più istanze del g* carattere. + Una o più istanze. g+ {n Esattamente n istanze g{2 successive del carattere. {n, n o più istanze. g{2, {,n Al massimo n istanze. g{,3 {n,m Trova le corrispondenze g{2,3 con almeno n istanze ma

Corrispondenze e classi di caratteri. al massimo m istanze. Prima di far vedere qualche esempio utile, bisogna parlare delle classi di caratteri. Le classi permettono di trovare le corrispondenze di un carattere appartenente ad una determinata classe, come un numero, un carattere alfabetico e così via. Nella tabella sono riportati esempi di classi : Classe Descrizione Esempio [a-z] Trova tutti i caratteri minuscoli. [a-z]{4 : Trova un gruppo di 4 caratteri minuscoli. [A-Z] Trova i caratteri maiuscoli. [A-Z]+ : Trova una o più istanze di un carattere maiuscolo. [0-9] Trova un numero. [0-9]{5 : Trova un gruppo di 5 numeri (ad esempio un CAP). [^0-9] Trova tutto ciò che è diverso da un numero. [^0-9]* : Trova tutto ciò che non è un numero. Parliamo ora di atomi. Racchiudendo fra parentesi un modello e sfruttando i simboli quantificatori visti nella prima tabella, è possibile formulare complesse espressioni regolari. A titolo di esempio, riportiamo vari blocchi di codice per controllare, ad esempio, dei dati ricevuti dall utente tramite un form HTML (parleremo più avanti nel corso come inviare dati ad uno script PHP tramite i form) : if ((empty($nominativo)) (ereg("[^a-za-z\ ]+",$nominativo,$array))) { print $nominativo. Non è un dato corretto ; Come vedete, se la variabile $nominativo è vuota o all interno sono stati trovate una o più corrispondenze di caratteri non alfabetici (compreso lo spazio), viene segnalato un messaggio di errore. if ((empty($email)) (!ereg("([a-za-z0-9\.]+)(@{1)([a-za-z0-9]{2,)\.([a-za-z0-9]{2,)",$email,$array)) (ereg("([\ \<\>\\\/]+)",$email,$array))) { print $email. Non è un indirizzo corretto ; Non spaventatevi!;) L istruzione if precedente dovrebbe essere scritta su una sola riga. Analizziamo con calma l espressione booleana. Se $email è vuota oppure è diversa dal modello descritto in ereg(), viene segnalato errore. Il modello può essere spiegato semplicemente nel seguente modo : il primo atomo verifica una o più occorrenze di caratteri alfanumerici, compreso il punto (si noti il carattere di escape \ davanti al punto, per evitare che ci sia ambiguità con il carattere di controllo visto prima). Il secondo atomo si accerta della presenza di un unica occorrenza del carattere @. Il terzo atomo e quarto atomo verificano la presenza di almeno 2 occorrenze di caratteri alfanumerici, seguiti da un punto,e seguiti ancora da almeno 2 caratteri alfanumerici.

Lezione 8 Le espressioni regolari. Manipolazione di stringhe tramite le RE. La seconda chiamata ad ereg() serve per controllare che non siano presenti caratteri strani del tipo <,>,\,,/ (tutti preceduti da caratteri di escape), per evitare manovre strane da utenti maliziosi. Questa purtroppo non è la sede adatta per parlare di problemi di sicurezza, ma vi consiglio caldamente di approfondire l argomento se volete intraprendere la carriera del programmatore web professionista. Non avete idea di quanti portali (del valore anche di centinaia di milioni) sono vulnerabili non per via del software utilizzato, come un particolare server web, ma per colpa di una cattiva programmazione o gestione del sito (su molti siti è possibile visualizzare user e password di connessione al database in chiaro, e la cosa grave è che alcuni utilizzano le stesse password sia per accedere alle cartelle del sito via ftp che per connettersi al database!!!). Adesso un altro esempio utile : if ((empty($codice)) (!ereg("([a-za-z]){6([0-9]){2([a-za-z]){1([0-9]){2([aza-z]){1([0-9]){3([a-za-z]){1",$codice,$array))) { print $codice. Non è un codice fiscale corretto ; Conoscendo la struttura di un codice fiscale, è possibile scrivere un semplice modello per un espressione regolare che verifichi la correttezza di questo dato. Infatti, un corretto codice fiscale può essere MDNTMS68C23E101W. Come potete osservare, l espressione regolare rispecchia fedelmente la struttura, cioè prima sei caratteri alfabetici, poi due cifre decimali etc. etc. Manipolazione di stringhe tramite le RE. Una funzione molto utile è la ereg_replace(), per sostituire modelli nelle stringhe. L unica differenza con ereg(), è il fatto che ereg_replace(), oltre a trovare le corrispondenze, effettua anche una sostituzione, ritornando la stringa manipolata : Sintassi: $stringa_res=ereg_replace(modello,replacement,$stringa); Tralasciando il semplice esempio di sostituzione di stringa (effettuabile più efficacemente con la funzione str_replace() vista nella scorsa lezione), introduciamo anche l uso dei riferimenti all indietro con ereg_replace(). Si racchiudono tra parentesi i singoli elementi di espressione regolare. Nel replacement, ognuno di essi sarà identificato da un numero intero di sequenza. Ad ogni atomo di espressione regolare, è possibile applicare una diversa sostituzione. Presentiamo un esempio classico: convertiamo una data in formato mm/gg/aaaa in gg/mm/aaaa : $date=02/28/2002; $data=ereg_replace( ([0-9]+)/([0-9]+)/ ([0-9]+),\\2/\\1/\\3,$date); $data conterrà la stringa 28/02/2002.