Tutorial PHP
Non sono molto esperto di tecnologie come PHP o Perl, infatti questo tutorial è stato gentilmente realizzato dal mio amico Goku, che ringrazio moltissimo per l'aiuto fornito.
Visitate il suo bellissimo sito !
Ora lascio la parola a lui ^_^ ...
PHP: Hypertext Preprocessor
Un linguaggio di scripting lato server implementato in HTML
Premessa
Piccola guida pratica al linguaggio scritta da Goku, webmaster di KameHouse.it. A tutti i lettori che hanno contribuito alla correzione di questo testo e a queste due fonti vanno i ringraziamenti dell'autore.
Questo documento è liberamente distribuibile sotto la condizione di lasciare inalterati i suoi contenuti e le informazioni sull'autore. Data di pubblicazione: domenica 4 novembre 2001. Ultima modifica: domenica 4 novembre 2001.
Sommario
PHP (ufficialmente «PHP: Hypertext Preprocessor», cioè preprocessore di ipertesti) è un linguaggio di scripting lato server implementato in HTML. Cosa significa in altre parole? Analizziamo i tre blocchi che formano la definizione.
Un linguaggio di scripting è come un linguaggio di programmazione, cioè una forma di interazione tra uomo e macchina che avviene tramite la lettura di una serie di istruzioni da parte di un compilatore, che le traduce in linguaggio macchina.
Uno script lato server, contrapposto allo script lato browser (per esempio JavaScript), è un programma che viene interamente eseguito nel server, cioè nel computer remoto a cui un utente si collega. Il computer dell'utente non deve eseguire alcuna istruzione, ma solamente visualizzare la pagina. Gli script lato server riducono i tempi di caricamento (se il server è sufficientemente veloce), eliminano i problemi di incompatibilità dei linguaggi nei browser, e riducono la possibilità di infezioni da virus.
L'espressione implementato in HTML significa che il linguaggio PHP è integrato nel codice HTML. Quindi si potranno scrivere righe di codice PHP all'interno di una normale pagina scritta in linguaggio HTML. Dunque non è necessario attribuire permessi speciali, o salvare la pagina in cartelle speciali. Ecco come appare una pagina PHP.
<html> |
Questa piccola guida rappresenta un punto di partenza per i principianti, quindi si propone di spiegare i concetti di base del linguaggio PHP senza entrare in ambiti troppo complessi. È comunque richiesta una minima conoscenza del linguaggio HTML e delle caratteristiche dei linguaggi di programmazione in generale. La conoscenza della lingua inglese può essere di notevole aiuto in molti casi.
In poche parole, PHP può effettuare qualunque cosa possano fare gli altri programmi CGI, per esempio elaborare i dati di un modulo, generare pagine dal contenuto dinamico, o inviare e ricevere cookies. Inoltre PHP può interagire con gli altri server attraverso i protocolli standard per il trasferimento dei file (HTTP, FTP) e della posta elettronica (POP3, IMAP), e altri ancora.
Ma la caratteristica di PHP più significativa e interessante è sicuramente il supporto per una varietà di formati di database. È semplicissimo scrivere una pagina web che sfrutta un database in cui salva e ordina i dati. Alcuni dei database supportati sono dBase, MySQL, ODBC, Oracle (OCI7 e OCI8), Unix dbm. In questa guida tuttavia ci limiteremo alla trattazione dei comandi di base di PHP, che si possono utilizzare su qualsiasi server (purché PHP sia stato installato), senza l'aggiunta di ulteriori espansioni, in primo luogo i database.
Le possibilità di PHP sono enormi, e possono essere sfruttate in due modi: scrivendo in prima persona script PHP, di solito per alcune parti del layout e per la gestione dei dati dai moduli, oppure ricorrere a script già pronti, che in genere sono più complessi, e puntano all'interazione (per esempio un forum).
Prima di cominciare, è necessario assicurarsi che il server su cui saranno pubblicate le pagine sia abilitato per interpretare codice PHP. I servizi di hosting gratuito e a pagamento solitamente segnalano questa possibilità. Se invece si possiede un proprio server, basta installare il compilatore PHP che si può prelevare gratuitamente dal sito ufficiale di PHP.
Per verificare subito se il proprio server supporta PHP basta seguire i tre passi seguenti.
Se la pagina visualizzerà il logo di PHP e alcune tabelle di informazioni, il server supporta correttamente PHP. Se invece la pagina appare vuota o contiene la riga scritta precedentemente, il server non riconosce PHP. In quest'ultimo caso è possibile provare a rinominare l'estensione del file in .php3. Se anche in questo caso il server non riconosce correttamente la pagina, è necessario rivolgersi all'amministratore del server.
Nota importante: Una volta effettuata la verifica, eliminare dal server la pagina di prova, perché questa contiene informazioni sulla configurazione del server che non si dovrebbero rendere disponibili al pubblico.
4. Caratteristiche del linguaggio
L'utilizzo di PHP implica la conoscenza della sintassi, delle variabili e dei relativi tipi, degli operatori, delle strutture, delle funzioni principali. Gli script PHP si possono scrivere con un qualsiasi editor formato solo testo, come Blocco note. Il file dovrà essere salvato con l'estensione .php (o .php3 a seconda delle impostazioni del server).
La sintassi è un insieme di regole che indicano il modo in cui si devono scrivere le diverse istruzioni. Gli errori più frequenti nei programmi sono proprio quelli di sintassi (dimenticare di chiudere una parentesi, tralasciare un punto e virgola, scrivere in modo sbagliato il nome di una variabile, ecc.), denominati syntax errors. Perciò è bene prestare particolare attenzione alla scrittura del codice, che, per poter essere eseguito, non deve contenere errori di alcun tipo.
4.1.1 Delimitazione del codice
Poiché PHP è integrato nella pagina HTML, è necessario avvisare l'interprete affinché riconosca una determinata regione della pagina e la interpreti come codice PHP. In altre parole, è necessario specificare quali parti della pagina sono scritte in linguaggio PHP. Per questo si usa un tag speciale, che si apre con <?php e si chiude con ?>. Il tag di PHP può essere scritto in altri modi, ma il migliore in termini di compatibilità è quello utilizzato sopra. Riprendendo l'esempio del punto 1, ecco come appare il codice sorgente della pagina originale.
<html> |
Notare la regione in cui è contenuto il codice PHP, che in questo caso è solo la riga print "Ciao, sono uno script PHP!";. Invece quello che segue è il codice sorgente della stessa pagina, vista da un utente che la richiama dal browser.
<html> |
Il tag e l'istruzione PHP sono scomparsi: il server ha elaborato il comando print all'interno della regione di PHP, e ha inserito nella pagina l'output, il risultato del comando print, che serve per scrivere del testo nella pagina. Se nel testo ci fossero stati anche altri tag HTML, il browser li avrebbe comunque interpretati come normale codice HTML, che quindi avrebbe potuto influire sull'aspetto grafico della pagina.
4.1.2 Separazione delle istruzioni
L'elemento separatore di tutte le istruzioni è il punto e virgola ; che si pone alla fine di ciascuna istruzione. Se la regione di PHP è composta da un unico comando, il punto e virgola si può omettere, come nell'esempio <?php print "Ciao, sono uno script PHP!"; ?> che può diventare <?php print "Ciao, sono uno script PHP!" ?>.
Altre forme di separazione (andare a capo, indentare le istruzioni) servono solo per migliorare la leggibilità del codice, che in ogni caso può essere scritto inserendo un comando dietro l'altro. In questo senso il punto e virgola svolge una funzione fondamentale nella effettiva separazione delle istruzioni. Basta confrontare i tre esempi di seguito, tutti validi, per osservare che più il codice contiene separazioni, più è gradevole da leggere. Viceversa, meno separazioni ci sono, meno saranno le dimensioni del file.
<?php
print "La prima istruzione."; $lettera = "a";
print "Questa è la lettera $lettera."; ?> |
Spesso è utile scrivere qualche nota che spieghi una particolare porzione di codice, o un promemoria che indichi una riga dello script. Per tutto questo, in PHP come in molti altri linguaggi esistono i commenti. Sono vere e proprie frasi delimitate da caratteri speciali, che l'interprete ignora durante la compilazione: per questo motivo i commenti sono utili per disattivare temporaneamente una o più righe di codice. Di seguito ci sono i tre tipi di commento utilizzabili.
<?php |
I dati gestiti da un compilatore prendono il nome di variabili. Una variabile è una cella di memoria in cui viene inserito un valore che, appunto, può variare. In PHP le variabili si indicano con il simbolo del dollaro $ seguito dal nome della variabile. I nomi di variabili sono case-sensitive, devono iniziare con una lettera o un trattino basso _ seguiti da qualsiasi numero di lettere, numeri, o trattini bassi. Le variabili possono contenere dati di tipi diversi, elencati di seguito, che vengono determinati automaticamente dal compilatore in base al contesto in cui è usata una variabile.
Tipo intero (integer): sono i numeri interi (insieme numerico Z), con segno positivo o negativo.
Tipo a virgola mobile (floating point): sono i numeri reali (insieme numerico R). Attenzione: spesso i risultati di operazioni con numeri a virgola mobile sono imprecisi per motivi di approssimazione nella conversione binaria. È consigliabile non confrontare numeri a virgola mobile senza avere utilizzato funzioni di alta precisione (che si installano a parte).
<?php |
Tipo stringa (string): è una sequenza di caratteri alfanumerici che si racchiude nelle virgolette semplici ' o in quelle doppie " con una piccola differenza: le virgolette semplici trattano il contenuto della stringa così com'è, mentre quelle doppie sostituiscono eventuali caratteri speciali o nomi di variabili con i rispettivi valori. L'esempio seguente chiarisce subito la questione.
<?php |
Con le virgolette doppie è possibile inserire il carattere \n, che manda accapo il cursore in fase di output. Nei casi obliqui, per esempio quando si vogliono inserire le virgolette nel testo di una stringa, si fa precedere al carattere una barra rovesciata \ che viene chiamata carattere di escape. Questa evita eventuali confusioni nell'interpretazione di caratteri come le virgolette che di solito segnalano la fine di una variabile. Anche in questo caso l'esempio vale più di cento parole.
<?php |
Tipo vettore o matrice (array): sono dati strutturati, che contengono più di un valore appartenente a uno dei tre tipi elencati sopra. I vettori hanno una sola dimensione (si possono pensare come una riga di una tabella), mentre le matrici hanno due o più dimensioni (cioè sono come una tabella con righe e colonne). Per identificare un elemento dell'array è necessario specificare le sue coordinate tra parentesi quadre, prima la riga e poi la colonna, un po' come per battaglia navale. I valori negli array con due o più dimensioni non possono essere contenuti nelle stringhe: per risolvere questo problema si racchiude tra parentesi graffe { e } l'array (PHP 4) o si usa l'operatore di concatenazione (PHP 3).
<?php |
Esistono anche gli array associativi, che hanno indici alfanumerici al posto degli indici numerici degli array visti sopra. Anche questi array possono essere multidimensionali. L'esempio mostra due modi per assegnare alcuni valori ad un array associativo.
<?php |
Gli operatori sono caratteri speciali che, usati in fase di assegnazione o di confronto, restituiscono un nuovo valore, a seconda della loro funzione. Di seguito si trovano i principali operatori.
Operatori di assegnazione
L'operatore principale è il simbolo di uguale = che non indica propriamente una uguaglianza (per questa si usa il doppio uguale == riportato di seguito) ma una assegnazione. La parte a sinistra del simbolo di uguale è il contenitore, quella a destra è il contenuto. Per esempio, $a = 3 significa che nella variabile $a viene inserito il valore 3. Ci sono anche operatori di assegnazione combinati, mostrati nell'esempio. In particolare nel secondo caso viene utilizzato il punto . come operatore di concatenazione tra due o più stringhe.
<?php |
Operatori aritmetici
Esempio |
Nome |
Risultato |
$a + $b |
Addizione |
Somma di $a e $b. |
$a - $b |
Sottrazione |
Differenza di $a e $b. |
$a * $b |
Moltiplicazione |
Prodotto di $a e $b. |
$a / $b |
Divisione |
Quoziente di $a e $b. |
$a % $b |
Modulo |
Resto di $a divisa per $b. |
Operatori di confronto
Esempio |
Nome |
Risultato |
$a == $b |
Uguale a |
Vero se $a è uguale a $b. |
$a != $b |
Non uguale a |
Vero se $a non è uguale a $b. |
$a < $b |
Minore di |
Vero se $a è minore stretto di $b. |
$a > $b |
Maggiore di |
Vero se $a è maggiore stretto di $b. |
$a <= $b |
Minore di o uguale a |
Vero se $a è minore di o uguale a $b. |
$a >= $b |
Maggiore di o uguale a |
Vero se $a è maggiore di o uguale a $b. |
Operatori logici
Esempio |
Nome |
Risultato |
! $a |
Negazione [not] |
Vero se $a non è vera o viceversa. |
$a && $b |
Intersezione [and] |
Vero se sia $a sia $b sono vere. |
$a || $b |
Unione [or] |
Vero se almeno $a o $b è vera. |
Operatori di incremento/decremento
Esempio |
Nome |
Risultato |
++$a |
Pre-incremento |
Incrementa $a di uno, poi restituisce $a. |
$a++ |
Post-incremento |
Restituisce $a, poi incrementa $a di uno. |
--$a |
Pre-decremento |
Decrementa $a di uno, poi restituisce $a. |
$a-- |
Post-decremento |
Restituisce $a, poi decrementa $a di uno. |
Le strutture servono per determinare un confronto o per ottimizzare il codice eseguendo blocchi di istruzioni ripetitive. In questa guida considereremo sei strutture fondamentali.
La sintassi di questa struttura è if (condizione) { istruzioni } e serve per confrontare due valori (tramite gli operatori di confronto visti prima) e svolgere determinate istruzioni nel caso il confronto restituisca il valore true. Altrimenti è eventualmente possibile eseguire altre istruzioni aggiungendo else { istruzioni }. Ancora, è possibile verificare una nuova condizione nel caso il primo confronto sia risultato false sostituendo o aggiungendo a else { istruzioni } l'istruzione elseif (condizione) { istruzioni }.
<?php |
La sintassi di questa struttura è switch (variabile) { case valore: istruzioni; } e corrisponde a una serie di if (variabile==valore) then { istruzioni }. Solitamente dopo l'ultimo comando del blocco di ogni case si inserisce l'istruzione break; per interrompere il confronto. È anche possibile inserire l'opzione default: al termine dei case per indicare una serie di istruzioni da eseguire se in questi non vengono trovate corrispondenze.
<?php |
Un ciclo permette di eseguire blocchi di istruzioni legate a un parametro con una variazione costante (per esempio un aumento costante di una unità). Il ciclo enumerativo si usa quando si conosce già a priori il numero di iterazioni da svolgere, quindi è d'obbligo con gli array: consente di risparmiare righe di codice utilizzando un parametro variabile, o contatore, al posto degli indici degli array. La sintassi del ciclo enumerativo in PHP è for (variabile con valore di partenza; intervallo di esecuzione; variazione) { istruzioni } dove con «variabile con valore di partenza» si intende l'impostazione di una variabile contatore, per esempio $i = 0, con «intervallo di esecuzione» si intende la condizione che soddisfa l'esecuzione del ciclo, per esempio $i < 10, e infine con «variazione» il valore che fa aumentare o diminuire la variabile contatore in ogni ciclo, per esempio $i++. Il ciclo di questo esempio sarà eseguito utilizzando la variabile $i, per 10 volte, partendo da $i = 0 ($i = 1, $i = 2, ecc.) per terminare con $i = 9; in ogni ciclo la variabile aumenta di una unità.
<?php |
Attenzione a non produrre cicli infiniti, cioè ponendo condizioni che non saranno mai false, e che quindi non determineranno mai l'uscita dal ciclo. Il compilatore comunque interrompe automaticamente lo script dopo alcuni secondi di latenza. La stessa avvertenza vale, oltre per il ciclo for, anche per i due cicli successivi. L'esempio sotto mostra un ciclo for infinito.
<?php |
L'iterazione per vero consiste nell'eseguire un blocco di istruzioni mentre è verificata una certa condizione, cioè mentre è vera (da qui il nome). In PHP la sintassi di questo ciclo è while (condizione) { istruzioni }. In questo ciclo, come nel seguente, la variabile contatore utilizzata nella condizione non aumenta automaticamente in ogni ciclo, quindi è necessario includere un'istruzione di incremento/decremento del contatore, in accordo con la condizione, altrimenti si genera un ciclo infinito. L'esempio sotto riprende lo stesso contesto utilizzato per il ciclo enumerativo: scrivere le prime 10 cifre incluso lo zero.
<?php |
La differenza sostanziale tra l'iterazione per vero e quella per falso è che la seconda esegue in ogni caso almeno il primo ciclo, poiché la condizione viene controllata alla fine del blocco di istruzioni. L'iterazione per vero, invece, se in partenza trova falsa la condizione posta, non esegue alcun ciclo. La sintassi dell'iterazione per falso (che quindi continua ad eseguire il ciclo se la condizione risulta falsa) è do { istruzioni } while (condizione);. Nell'esempio si riprende il caso precedente.
<?php |
Può essere utile includere nella pagina il contenuto di un file esterno, che potrebbe essere sia codice PHP sia codice HTML. In quest'ultimo caso si usa come alternativa ai frames: un menu di navigazione può essere scritto in un file a parte, che viene richiamato in ogni pagina. In questo modo basta modificare solo il file esterno, e tutte le pagine conterranno il nuovo menu modificato. Oltre a questo uso "improprio" che esula dal puro linguaggio PHP, si possono includere anche frammenti di codice PHP a patto di inserire i tag di delimitazione del codice PHP nel file esterno. La struttura (che assomiglia a una funzione ma di fatto non lo è) in PHP è include() oppure require(). Tra le parentesi si specifica l'indirizzo del file, in percorso assoluto se si trova sullo stesso server, o con un URL se è un file remoto. Per esempio, con include("file.php") si include un file PHP che si trova nella stessa cartella. La differenza tra include() e require() è che il primo include e interpreta ogni volta il file, mentre il secondo lo fa una volta sola, perciò non può essere inserito nei cicli.
Le funzioni di PHP sono moltissime, e svolgono le operazioni più disparate. Di seguito si elencano quelle più comuni, lasciando al lettore la possibilità di scoprirne altre consultando il manuale reperibile sul sito ufficiale di PHP.
abs (valore)
array_keys (array)
array_reverse (array)
array_values (array)
chop (stringa)
die (stringa)
ereg (ricercando, stringa)
ereg_replace (sostituendo, sostitutore, stringa)
Restituisce una stringa in cui i caratteri della stringa di partenza denominati «sostituendo» sono stati sostituiti con altri caratteri denominati «sostitutore». La ricerca di un sostituendo è case-sensitive.
<?php |
eregi (ricercando, stringa)
eregi_replace (sostituendo, sostitutore, stringa)
exit
explode (separatore, stringa)
<?php |
implode (separatore, array)
print argomento
sizeof (array)
sqrt (valore)
strip_tags (stringa)
strlen (stringa)
strtolower (stringa)
strtoupper (stringa)
substr (stringa, partenza [, lunghezza])
<?php |
Sito
ufficiale di PHP [http://www.php.net/]
Per prelevare gratuitamente il programma di installazione di PHP su un server,
le relative istruzioni, e le diverse versioni del manuale. Presenta anche
le ultime news ed eventuali aggiornamenti.
PHPBuilder.com
[http://www.phpbuilder.com/]
La risorsa principale per tutti i programmatori di PHP. Contiene archivi,
news, consigli, osservazioni, forum per lo scambio di idee, e altro ancora.
The
PHP Resource Index [http://php.resourceindex.com/]
Collezione di decine di script PHP completi, gratuiti o a pagamento, e funzioni
PHP utili per l'intergrazione in determinati script.
Questa piccola guida dovrebbe avere fornito un'impostazione generale sull'uso di PHP. Si è divagato il meno possibile su alternative formali e opzioni aggiuntive del linguaggio, allo scopo di dare subito la possibilità di mettere in pratica quanto letto. Esistono molti altri aspetti interessanti che qui non sono stati trattati, come per esempio la gestione dei database, dei cookies, dei file remoti. Perciò si consiglia caldamente di recuperare il manuale (disponibile anche in italiano) dal sito ufficiale di PHP. Il manuale costituisce uno strumento esauriente, ricco di esempi, che spiega quasi tutti gli aspetti del linguaggio. Contiene anche un utilissimo elenco di funzioni, suddivise per tipo, corredate da esempi. È anche possibile ricercare alcuni termini (con la versione nel formato della guida di Windows, CHM).
A questo punto si è in grado di scrivere script PHP abbastanza articolati, a seconda dell'uso che si intende farne. Oppure è possibile prendere spunto da script già fatti, che si trovano agli indirizzi riportati sopra. Invitiamo a non arrendersi mai di fronte alle difficoltà, auguriamo buona programmazione e - perché no - buon divertimento.
Ringrazio Nuovamente Goku per avermi fornito questa guida e saluto tutti voi sperando vi sia piaciuta ^_^
Goku, Vegeth.