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 !

www.kamehouse.it

 

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


1. Introduzione

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.

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.


2. Finalità del linguaggio

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).


3. Utilizzo su un server

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.

3.1 Verifica immediata

Per verificare subito se il proprio server supporta PHP basta seguire i tre passi seguenti.

  1. Creare un file con estensione .php da un editor solo testo come Blocco note.
  2. Inserire la riga di codice <?php phpinfo(); ?> e salvare il file.
  3. Copiare il file sul server remoto e aprirlo dal browser.

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).

4.1 Sintassi

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>
    <head>
        <title>Pagina di prova di PHP</title>
    </head>
    <body>

        <p>Questa pagina contiene sia codice HTML sia codice PHP.</p>

        <?php
        print "Ciao, sono uno script PHP!";
        ?>

    </body>
</html>

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!" ?>.

4.1.3 Commenti

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
    print "Questo è un test."; // Commento stile C++ su una linea
    /* Questo è un commento stile C su più linee
       ecco un'altra linea del commento */
    print "Questo è un altro test.";
    print "Questo è l'ultimo test."; # Commento stile shell su una linea
?>

4.2 Variabili e tipi di dato

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.

4.3 Operatori

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

Operatori aritmetici

Operatori di confronto

Operatori logici

Operatori di incremento/decremento

4.4 Strutture

Le strutture servono per determinare un confronto o per ottimizzare il codice eseguendo blocchi di istruzioni ripetitive. In questa guida considereremo sei strutture fondamentali.

4.4.1 Selezione binaria

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
    if ($a > $b) {
        print "a è più grande di b";
    }

    if ($a > $b) {
        print "a è più grande di b";
    } else {
        print "a NON è più grande di b";
    }

    if ($a > $b) {
        print "a è più grande di b";
    } elseif ($a == $b) {
        print "a è uguale a b";
    } else {
        print "a è più piccolo di b";
    }
?>

4.4.2 Selezione multipla

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
    if ($i == 0) {
        print "i è uguale a 0";
    }
    if ($i == 1) {
        print "i è uguale a 1";
    }
    if ($i == 2) {
        print "i è uguale a 2";
    }

    switch ($i) {
        case 0:
            print "i è uguale a 0";
            break;
        case 1:
            print "i è uguale a 1";
            break;
        case 2:
            print "i è uguale a 2";
            break;
        default:
            print "i non è uguale a 0, 1 o 2";
    }
?>

4.4.3 Ciclo enumerativo

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
    print "0123456789";

    for ($i = 0; $i < 10; $i++) {
        print $i;
    }

/* Naturalmente in questo esempio il ciclo può essere sostituito benissimo dall'istruzione print "0123456789"; che produce lo stesso output. Se però i numeri da visualizzare sono molti, allora un ciclo for è sicuramente il modo migliore per rappresentarli. Il ciclo for si utilizza comunque in contesti più complessi di quello presentato nell'esempio. */
?>

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
    for ($i = 0; $i < 10; $i++) {
        $i = 2;
    }

/* In ogni ciclo si attribuisce al contatore $i il valore 2, quindi l'interprete rimane sempre nel ciclo perché il contatore rimane sempre minore di 10! Questi errori sono di tipo logico, non sintattico, perciò in fase di compilazione non vengono riscontrati i 'syntax errors'. Durante l'esecuzione, comunque, l'interprete realizza di essere fermo alla stessa istruzione e quindi termina il programma dopo qualche decina di secondi trascorsa in cicli infiniti. */
?>

4.4.4 Iterazione per vero

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
    $i = 0;
    while ($i < 10) {
        print $i;
        $i++;
    }
?>

4.4.5 Iterazione per falso

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
    $i = 0;
    do {
        print $i;
        $i++;
    } while ($i = 10);
?>

4.4.6 Inclusione

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.

4.5 Funzioni principali

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)

    Restituisce il valore assoluto (modulo) di un valore.

array_keys (array)

    Restituisce un array con tutti i caratteri utilizzati nell'array (associativo) di partenza.

array_reverse (array)

    Restituisce un array con gli elementi disposti nell'ordine inverso rispetto all'array di partenza.

array_values (array)

    Restituisce un array con tutti gli elementi contenuti nell'array di partenza.

chop (stringa)

    Elimina l'eventuale spazio bianco o accapo \n al termine di una stringa.

die (stringa)

    Termina l'esecuzione dello script ed esce restituendo un messaggio contenente il valore della stringa specificata.

ereg (ricercando, stringa)

    Restituisce vero se il ricercando viene trovato nella stringa specificata, altrimenti restituisce falso. La ricerca è case-sensitive.

ereg_replace (sostituendo, sostitutore, stringa)

eregi (ricercando, stringa)

    Simile alla funzione ereg(), con l'unica differenza che in questo caso la ricerca di un ricercando è case-insensitive.

eregi_replace (sostituendo, sostitutore, stringa)

    Simile alla funzione ereg_replace(), con l'unica differenza che in questo caso la ricerca di un sostituendo è case-insensitive.

exit

    Termina l'esecuzione dello script ed esce.

explode (separatore, stringa)

    Restituisce un array formato da sottostringhe ottenute dalla separazione della stringa specificata secondo un separatore. L'esempio mostra la creazione di un array di stringhe da una stringa contenente elementi separati da uno spazio. È identica alla funzione split().

implode (separatore, array)

    Restituisce una stringa formata da tutti gli elementi di un array separati dal carattere separatore specificato. È identica alla funzione join(), ed è l'inverso di explode().

print argomento

    Restituisce in output un argomento, che può essere una stringa o una variabile. È identica alla funzione echo.

sizeof (array)

    Restituisce il numero di elementi in un array specificato.

sqrt (valore)

    Restituisce la radice quadrata di un valore.

strip_tags (stringa)

    Restituisce una stringa dalla quale si è cercato di eliminare tutti i tag PHP e HTML eventualmente contenuti in essa.

strlen (stringa)

    Restituisce la lunghezza di una stringa, cioè il numero di caratteri contenuti (ricordare che una stringa può essere considerata come un array di caratteri).

strtolower (stringa)

    Restituisce una stringa in cui tutti i caratteri sono stati resi minuscoli.

strtoupper (stringa)

    Restituisce una stringa in cui tutti i caratteri sono stati resi maiuscoli.

substr (stringa, partenza [, lunghezza])

    Restituisce i valori di una stringa a partire da un determinato punto di questa (il primo carattere è in posizione zero), eventualmente rispettando una certa lunghezza massima. Se il valore di partenza è negativo, il conteggio avviene dall'ultimo carattere della stringa.

5. Links e conclusioni

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.

 

 

Indietro - Home - Torna su