Di seguito, in una breve e semplice introduzione, vorremmo mostrare alcuni esempi per l'utilizzo di PHP. Essi sono relativi soltanto alla creazione dinamica di pagine web, anche se PHP non ha funzionalità limitate esclusivamente alla creazione delle sole pagine web. Fare riferimento alla sezione intitolata Cosa può fare PHP per avere ulteriori informazioni.

Le pagine web create con PHP vengono trattate come normali pagine HTML e possono essere create e modificate nello stesso modo in cui si sviluppano normali pagine HTML.

Di cosa ho bisogno?

In questo tutorial assumiamo che il vostro server abbia il suporto PHP attivato e che tutti i file con estensione .php vengano gestiti da questo. Quasi in tutti i server questa è l'estensione di default per i file PHP., ma consultatevi col vostro system administrator per sicurezza. Se il vostro server supporta PHP, allora, non è necessario fare nulla. Semplicemente create i vostri file .php e scaricateli nella vostra directory web, il server le analizzerà e le eseguirà magicamente. Non è necessario compilare nulla nè installare strumenti aggiuntivi. Si pensi ai file PHP come a dei semplici file HTML con una intera famiglia aggiuntiva di magici tags che consentono di fare ogni sorta di cose.

Diciamo che si vuole risparmiare larghezza di banda preziosa e sviluppare a livello locale. In questo caso, si vorrà installare un web server, come Apache, e naturalmente PHP. È molto probabile che si desidera installare anche un database, come MySQL.

È possibile installare questi applicativi singolarmente o scegliere un modo più semplice. Il nostro manuale ha istruzioni per l'installazione di PHP (ammesso che si abbia già qualche web server funzionante). Se si hanno problemi con l'installazione di PHP, suggeriamo di porre della domande alla nostra mailing list dell'installazione. Se si sceglie di andare sulla strada più semplice, quindi individuare un pacchetto pre-configurato per il sistema operativo, che installa automaticamente tutti questi elementi con pochi click. È facile configurare su qualsiasi sistema operativo, incluso MaxOSX, Linux e Windows, un server web con il supporto a PHP. Su Linux, è possibile trovare rpmfind e PBone utili per localizzare gli RPM. Potresti voler visitare anche apt-get per trovare pacchetti per Debian.

La prima pagina PHP

Creare un file con nome ciao.php nella directory principale del web server (DOCUMENT_ROOT) che abbia il seguente contenuto:

Il nostro primo script PHP: ciao.php <html> <head> <title>Test PHP</title> </head> <body> <?php echo "Hello World!<p>"; ?> </body> </html> Usa il tuo browser per accedere al file con il tuo URL del web server, finendo con il collegamento al file /ciao.php. Quando si sviluppa localmente questo URL sarà simile a http://localhost/ciao.php o http://127.0.0.1/ciao.php ma questo dipende dalla configurazione del web server. Se tutto è configurato correttamente, questo file verrà analizzato da PHP e il seguente output sarà inviato al vostro browser: <html> <head> <title>Test PHP</title> </head> <body> <p>Hello World</p> </body> </html>

Questo programma è molto semplice e sicuramente non era necessario fare ricorso a PHP per creare una pagina come quella. Tutto ciò che essa fa è visualizzare: Hello World! usando l'istruzione echo di PHP. Nota che il file non ha bisogno di essere eseguibile o speciale in alcun modo. Il server viene a sapere che questo file deve essere interpretato da PHP perché si è utilizzata l'estensione ".php", per la quale il server è configurato per passarlo a PHP. Si pensi ad esso come ad un normale file HTML nel quale sono contenuti uno speciale set di tags che permettono di eseguire una moltitudine di cose interessanti.

Se si è provato questo esempio e non ha dato alcun output, o è apparso un pop-up che chiedeva se scaricare la pagina, o se è apparso il file come testo, probabilmente che il server su cui si stanno effettuando le prove non ha abilitato PHP o non è configurato opportunamente. Provare a chiedere al proprio amministratore di abilitarlo per voi usando il capitolo del manuale dedicato all'Installazione. Se si vogliono sviluppare in locale script PHP, leggere anche il capitolo sull'installazione per assicurarsi che tutto sia configurato correttamente. Assicurarsi che si accede al file via http con il server che fornisce l'output. Se si richiama il file semplicemente dal proprio file system, allora non sarà analizzato da PHP. Se i problemi persistono comunque, non esitare a utilizzare una delle tante opzioni delsupporto PHP.

L'obiettivo dell'esempio è quello di mostrare il formato speciale dei tag PHP. In questo esempio abbiamo usato Lt?php per indicare l'inizio di un tag PHP. Quindi abbiamo scritto l'istruzione PHP e abbiamo lasciato la modalità PHP usando il tag di chiusura, ?Gt. All'interno di un file HTML come questo si può entrare ed uscire dalla modalità PHP quante volte si desidera. Per ulteriori dettagli, leggere la sezione del manuale su sintassi di base di PHP.

Nota: Nota riguardo i Line Feed I Line feed hanno poco significato in HTML, rimangono comunque una buona idea per rendere l'aspetto dell'HTML bello e pulito inserendo le line feeds al suo interno. Una linefeed che segue immediatamente dopo una chiusura ?Gt sarà rimossa da PHP. Questo può essere estremamente utile quando si inseriscono molti blocchi PHP o si includono file contenenti PHP che non dovrebbero avere dell'output. Allo stesso tempo può esserci un po' di confusione. È possibile inserire uno spazio dopo la chiusura ?Gt per forzare uno spazio e un line feed da stampare, o puoi inserire un line feed esplicito nell'ultimo echo/print dall'interno del blocco PHP.
Nota: Nota riguardo gli editor di testo Esistomo molti editor di testo e Integrated Development Environment (IDE) che possono essere usati per creare, modificare e gestire file PHP. Una lista parziale di questi strumenti è disponibile qui: Lista degli Editor PHP. Se si desidera suggerire un nuovo programma, visitare la pagina sopra e chiedere al curatore di aggiungerlo alla lista. Avere un editor con evidenziazione della sintassi può essere utile.
Nota: Nota riguardo i Word Processor Word processor quali StarOffice Writer, Microsoft Word e Abiword non sono una buona scelta per modificare i file PHP. Se si volessero utilizzare comunque per questo script d'esempio, ci si deve assicurare che il file venga salvato come testo o PHP non sarà in grado di leggere ed eseguire lo script.
Nota: Nota riguardo Blocco Note di Windows Se si scrive codice usando l'applicazione di Windows Blocco Note, occorre assicurarsi che i file vengano salvati con estensione .php. (Blocco Note aggiunge automaticamente l'estensione .txt ai file, a meno che non si intraprenda uno dei passi descritti di seguito.) Quando si salva il file e viene chiesto il nome da assegnargli,scrivere il nome fra virgolette (ad esempio: "ciao.php"). In alternativa, si può cliccare sul menu a tendina 'Documenti di Testo' nella finestra di 'Salvataggio' e cambiare l'impostazione in "Tutti i File". A quel punto si può inserire il nome del file, senza usare le virgolette.

Ora che si è creato con successo uno script funzionante in PHP, è il momento di creare il più famoso script PHP! Effettuare una chiamata alla funzione phpinfo e si vedranno un sacco di informazioni utili sul proprio sistema e configurazioni come le variabili predefinite disponibili, i moduli PHP caricati, e le impostazioni della configurazione. Prendere un po' di tempo e rivedere queste importanti informazioni.

Ricevere informazioni sul sistema da PHP <?php phpinfo(); ?>

Qualcosa di utile

Andiamo a fare qualcosa di leggermente più utile. Andremo a controllare che tipo di browser sta utilizzando la persona che visita le nostre pagine. Per fare questo si andrà a controllare la stringa dell'user agent che il browser invia come parte della richiesta HTTP. Quest'informazione viene inviata in una variabile. Le Variabili iniziano sempre con il simbolo del dollaro in PHP. La variabile alla quale ci riferiamo adesso è $_SERVER["HTTP_USER_AGENT"].

Nota: $_SERVER è una variabile speciale riservata a PHP la quale contiene tutte le informazioni relative al Web Server. È conosciuta come Variabile autoglobale (o Superglobale). Per maggiori informazioni è possibile vedere la pagina del manuale relativa alle Variabili Autoglobali. Questo tipo di variabili è stato introdotto nella versione 4.1.0 di PHP. Nelle versioni precedenti abbiamo utilizzato gli ormai vecchi array $HTTP_*_VARS, come $HTTP_SERVER_VARS. Dal PHP 5.4.0 queste variabili sono state rimosse. (Potete guardare nelle note del vecchio codice.)

Per visualizzare questa variabile, dobbiamo semplicemente:

Stampare a video una variable (un elemento d'Array) <?php echo $_SERVER["HTTP_USER_AGENT"]; ?> L'output (risultato) di questo script potrebbe essere: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Ci sono molti types (tipi) di variabili disponibili in PHP. Nell'esempio di sopra abbiamo stampato un elemento di un Array. Gli Array possono essere molto utili.

$_SERVER è soltanto una variabile che automaticamente viene resa diponibile da PHP. È possibile visualizzare una lunga lista nella sezione Variabili riservate del manuale oppure ottenere la lista completa cercando nell'output della funzione phpinfo utilizzata nell'esempio della precedente sezione.

Si possono inserire istruzioni PHP multiple all'interno di un tag PHP e creare piccoli blocchi di codice che fanno più di un singolo echo. Per esempio, se si volesse controllare se l'utente usa Internet Explorer si potrebbe fare questo:

Esempi usando le strutture di controllo e le funzioni <?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) { echo 'Stai usando Internet Explorer<br />'; } ?> L'output di esempio di questo script potrebbe essere: Stai usando Internet Explorer<br />

Qui introduciamo un paio di nuovi concetti. Abbiamo l'istruzione if (se). Se avete una conoscenza con la sintassi di base usata dal linguaggio C, questo dovrebbe sembrare logico per voi. In caso contrario, dovreste probabilmente prendere qualsiasi libro introduttivo di PHP e leggere i primi capitoli, o leggere la parte del manuale relativa ai Riferimenti del Linguaggio.

Il secondo concetto che abbiamo introdotto era la chiamata alla funzione strpos. Questa è una funzione sviluppata in PHP che cerca una stringa all'interno di un'altra stringa. In questo caso abbiamo cercato 'MSIE' (cosiddetta occorrenza) all'interno della stringa $_SERVER["HTTP_USER_AGENT"] (cosiddetta haystack). Se la stringa viene trovata all'interno dell'haystack, la funzione restituisce la posizione dell'occorrenza relativa all'inizio dell'haystack. Altrimenti, restituisce false. Se non restituisce false, l'espressione if viene valutata come true ed il codice all'interno dei relativi {braces} (sostegni) sarà eseguito. Altrimenti, il codice non sarà eseguito. Sentitevi liberi di generare esempi simili, con if, else (altrimenti), ed altre funzioni quali strtoupper e strlen. Ogni pagina del manuale, relativa a queste funzioni contiene anche degli esempi pratici. Se non sei sicuro di come utilizzare queste funzioni, vorrai leggere le pagine del manuale su come leggere una definizione di funzione e la sezione sulle funzioni PHP.

Possiamo fare un passo avanti e mostrarvi come potete entrare ed uscite dal modo PHP anche dall' interno di un blocco PHP:

Intercalare i modi PHP e HTML <?php if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) { ?> <h3>strpos() dovrebbe ritornare non-false</h3> <b>Stai usando Internet Explorer</b> <?php } else { ?> <h3>strpos() dovrebbe ritornare false</h3> <b>Non stai usando Internet Explorer</b> <?php } ?> L'output di esempio di questo script potrebbe essere: <h3>strpos() dovrebbe ritornare non-false</h3> <b>Stai usando Internet Explorer</b>

Invece di usare la dichiarazione echo per fare l'output di qualcosa, saltiamo fuori dalla modalità PHP inviando soltanto HTML puro. Il punto importante da notare qui è che il flusso logico dello script rimane intatto. Solo uno dei blocchi di HTML finirà per essere inviato come risposta, dipendendo dal risultato di strpos. In altre parole, dipende se la stringa MSIE viene trovata o meno.

Trattare con i Form

Una delle caratteritiche più forti di PHP è il modo in cui gestisce i form. Il concetto da comprendere principalmente è che qualsiasi elemento di un form sarà automaticamente disponibile per i vostri script PHP. Per maggiori informazioni ed esempi relativi all'utilizzo dei form consultate la sezione del manuale che si riferisce a le Variabili da sorgenti esterne. A seguire un esempio di un form HTML:

Un semplice form HTML <form action="action.php" method="POST"> <p>Il tuo Nome: <input type="text" name="name" value="" /></p> <p>La tua età: <input type="text" name="age" value ="" /></p> <p><input type="submit"></p> </form>

Questo form non ha niente di speciale. È un semplice form in HTML che non presenta nessun tipo di tags particolari. Quando l'utente riempie questo form e preme il pulsante submit, viene richiamata la pagina action.php. In questo file il risultato sarà qualcosa di simile:

La stampa video di dati dal nostro form Ciao <?php echo htmlspecialchars($_POST['name']); ?>. La tua età è di <?php echo (int)$_POST['age']; ?> anni. Ecco un possibile output di questo script: Ciao Joe. La tua età è di 22 anni.

A parte le parti relative a htmlspecialchars e (int), ciò che avviene dovrebbe risultare ovvio. htmlspecialchars si assicura che qualsiasi carattere speciale in HTML sia propriamente codificato in modo che la gente non possa iniettare tag HTML o Javascript nella vostra pagina. Per il campo age, in quanto sappiamo che è un numero, possiamo semplicemente convertirlo in un int il quale si sbarazzerà automaticamente di qualsiasi carattere strano. Puoi anche fare questo automaticamente con PHP utilizzando l'estensione filter. Le variabili $_POST["name"] e $_POST["age"] vengono impostate automaticamente dal PHP. Prima avevamo usato la variabile autoglobal $_SERVER, ora invece abbiamo introdotto la variabile autoglobal $_POST che contiene tutti i dati di tipo POST. Notate che il metodo del nostro form è il POST. Se usassimo il metodo GET le informazioni ricavate dal nostro form si troverebbero invece in $_GET. Si può anche usare la variabile autoglobale $_REQUEST se la provenienza dei dati richiesti non ci interessa. Questa variabile contiene un misto di dati GET, POST e COOKIE.

L'uso di vecchi codici con le nuove versioni di PHP

Da quando il PHP è divenuto un linguaggio di scripting popolare, esistono più fonti che producono listati di codice che si possono adoperare nei propri scripts. La maggioranza degli sviluppatori del PHP ha cercato di renderlo compatibile con le versioni precedenti, perciò uno script creato per una vecchia versione del PHP dovrebbe girare senza modifiche (in teoria) in una più recente. In pratica, spesso possono servire delle correzioni.

Ecco due delle più importanti modifiche apportate al vecchio codice: I vecchi arrays $HTTP_*_VARS non sono più disponibili a partire da PHP 5.4.0. In PHP 4.1.0 furono introdotti i seguenti autoglobal arrays: Essi sono: $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST, e $_SESSION. Le variabili esterne non vengono più registrate nel global scope per default. In altre parole, da PHP 4.2.0 la direttiva PHP register_globals è off per default in php.ini. Il metodo consigliato per accedere a questi valori è quello che fa uso degli array autoglobali suddetti. Scripts, libri e tutorials più vecchi possono contare su questa direttiva su on. Se essa è on, per esempio, qualcuno potrebbe usare $id dall'URL http://www.example.com/foo.php?id=42. La variabile, $_GET['id'] sarebbe disponibile indifferentemente del fatto che sia on od off. Per ulteriori dettagli su queste modifiche, vedere la sezione sulle variabili predefinite ed i links ad essa connessi.

E poi?

Con quello che sapete ora dovreste essere in grado di comprendere la maggior parte del manuale ed anche i vari scripts di esempio reperibili nelle raccolte di esempi.

Per vedere varie slide delle presentazioni che mostrano di più ciò che PHP può fare, consultare il Sito del Materiale della Conferenza di PHP: Php talks