paper.gifPubblicato su www.linuxvalley.com

fire.gif

phplogo.gifALLA SCOPERTA DI PHP3
Non è più necessario ricorrere alla tecnologia ASP di Microsoft per trasformare i documenti html in veri programmi. Linux, il server web Apache ed il linguaggio PHP3 permettono infatti un approccio nuovo alla programmazione di Internet superando il tradizionale uso degli scripts CGI tipico degli ambienti Unix
Il linguaggio che introduciamo in questa nuova serie di articoli dedicati a Linux e al web scripting, si sta imponendo, dopo pochi anni dalla sua nascita, come unico e validissimo concorrente alla programmazione basata sulle Active Server Pages. L'uso del Visual Basic all'interno dell'html sta spopolando tra i siti internet che vogliono ottenere di più da quello che normalmente si ottiene dall'intreccio di quei semplici marcatori inventati dal world wide web consortium (W3C) una decina di anni fa. Anche se l'html, geniale linguaggio per Internet, in questi ultimi anni sia stato condito da estensioni più o meno sofisticate come il dynamic html (dhtml) ed i fogli di stile (CSS), il programmatore di un sito web che vuole interfacciarsi con il database aziendale per proporre soluzioni di commercio elettronico o di analisi e rappresentazione dei dati è costretto ad usare altri metodi: CGI, Java, ASP oppure metodologie proprietarie offerte dai principali produttori di database (Sybase, Oracle, Coldfusion, etc). Tuttavia ad alimentare l'evoluzione degli strumenti per programmare il web, creando un tool di sviluppo innovativo, ha contribuito anche il popolo dei programmatori affezionati a Linux per nulla intimorito dalla rapida diffusione delle tecniche proposte da Microsoft. Nel 1995, infatti, Rasmus Lerdorf rilascia la prima versione stabile di PHP (Personal Home Page Tools). Il successo di tale linguaggio è stato tale che alcune stime aggiornate ed attendibili contano in ben 150000 i siti che fanno uso di questa moderna tecnologia. Ma vediamo di cosa si tratta.
linea.gif
UN LINGUAGGIO DI PROGRAMMAZIONE COMPLETO
PHP3 oltre ad essere un linguaggio di programmazione è un interprete di codice. Viene integrato in fase di installazione direttamente nel server web come modulo per Apache. Tale integrazione, quindi, consente allo stesso motore http di eseguire il programma PHP. Quest'ultimo viene inserito nel documento html (salvato con estensione .php3) utilizzando una coppia di marcatori speciali che ne delimitano l'inizio e la fine. In buona sostanza si possono usare quattro modi per scrivere codice PHP all'interno di una pagina web, ognuno dei quali prevede l'uso di una particolare coppia di tag. Per esempio possiamo stampare del testo usando i tag <? e ?>, così

<? echo("Testo stampato con PHP3\n"); ?>

oppure i tag <?php e ?>

<?php echo("Testo stampato con PHP3\n"); ?>

Un terzo metodo prevede l'uso dei marcatori <script language="php"> e </script>

<script language="php"> 
  echo ("Testo stampato con PHP3\n");
</script>

mentre la quarta opzione ci è data dai tag <% e %>

<% echo("Testo stampato con PHP3\n"); %>

Nei nostri esempi useremo la seconda tecnica, quella che prevede l'uso di <?php e ?>: due tag sintetici ma facilmente individuabili all'interno di una pagina html. Per quanto riguarda lo stile di programmazione, in generale conviene scrivere i marcatori di apertura e di chiusura su due righe di codice distinte indentando, possibilmente, lo script PHP racchiuso in essi ed isolandolo dal resto del documento con due righe vuote, così:


<html>
<head>
<title>Prova con PHP3</title>
</head>
<body>

<?php
   echo("Prima riga stampata con PHP3\n");
   echo "Seconda riga stampata con PHP3\n";
   print("Terza riga stampata con PHP3\n");
   printf("Quarta riga stampata con PHP3\n");
?>

</body>
</html>

Salviamo il programma con nome prova.php3 in una directory di pubblicazione del server web ed apriamolo con netscape usando l'url http://localhost/prova.php3. Il risultato che otterremo sarà ovviamente la stampa sul browser di quattro righe di testo, stampa ottenuta con quattro istruzioni PHP. E' importante osservare come ogni istruzione termini con un punto e virgola. Questa regola è obbligatoria, proprio come nel C e nel Perl. Per produrre l'output del testo abbiamo usato tre funzioni predefinite di PHP: echo, print e printf. In realtà echo non è una funzione vera e propria ma bensì un costrutto interno al linguaggio. Ciò è dimostrato dal fatto che possiamo anche non usare le parentesi tonde per racchiudere la stringa da stampare (vedi seconda istruzione). Le vere funzioni, invece, come print e printf richiedono l'uso delle parentesi. printf , in particolare, ci permette di assegnare una formattazione al testo stampato usando opportuni argomenti sostanzialmente simili a quelli della funzione printf del linguaggio C

<?php
  $testo = "hello world\n";
  printf("%s", $testo);   // stampa hello world
?>

Notiamo in questo esempio come si possano includere commenti all'interno dello script usando una coppia di slash in stile C++. Compare anche una istruzione di inizializzazione con la quale assegniamo alla variabile $testo la stringa "hello world". Delle variabili e delle operazioni che potremo fare con esse ce ne occuperemo diffusamente nel prossimo articolo. Nel frattempo concludiamo questo primo paragrafo anticipando da un lato la presenza in PHP delle classiche istruzioni di controllo come if, else, switch, while etc, e dall'altro l'esistenza di una vasta gamma di funzioni predefinite per il trattamento delle stringhe e delle variabili, oltre ovviamente ad una serie di comandi per gestire file e directories.
linea.gif
PRIMITIVE GRAFICHE INTEGRATE
Nonostante le molteplici caratteristiche appena elencate, in PHP sono state integrate alcune funzioni per la generazione delle primitive grafiche più comuni. Ciò significa che da uno script PHP possiamo disegnare "al volo", sulla pagina del nostro browser preferito, linee, cerchi, archi e poligoni. Inoltre come se tutto questo non bastasse abbiamo anche la possibilità di creare o modificare immagini gif. La modifica verrà eseguita non sul file dell'immagine ma sulla sua rappresentazione nella pagina web. Attualmente i formati grafici supportati sono il gif, il jpeg ed il png. Le funzioni per la manipolazione e la generazione delle immagini, però, richiedono la presenza nel server della libreria grafica GD la quale va inclusa in fase di compilazione del pacchetto PHP fornendo un opportuno paramento al comando "configure" usato per creare il makefile personalizzato. Direi quindi che è giunto il momento di stupire la nostra curiosità disegnando alcune figure con il seguente esempio:

<?php
  Header("Content-type: image/gif");
  // Invia il tipo MIME al browser
  $img = imagecreate(320, 240);
  /* definisco un foglio da disegno virtuale
  delle dimensioni di 320x240 pixel */
  $bianco = imagecolorallocate($img, 255, 255, 255);
  // il foglio e' bianco
  $nero = imagecolorallocate($img, 0, 0, 0);
  $rosso = imagecolorallocate($img, 255, 0, 0);
  $verde = imagecolorallocate($img, 0, 255, 0);
  // definisco i colori per le figure  
  imageline($img, 10, 10, 200, 200, $nero);
  // disegna una linea obliqua di colore nero
  imagerectangle($img, 50, 50, 150, 150, $verde);
  // traccia il contorno verde di un quadrato
  imagefilledrectangle($img, 200, 100, 300, 220, $rosso);
  /* disegna un rettangolo largo 100 ed alto 40 pixel
  e lo riempie di rossoe */
  imagegif($img); // disegna tutte le figure
?>

fermiamoci qui anche se la mia vena artistica mi suggerisce di continuare. L'insieme dei comandi grafici disponibili è davvero completo, quelli usati nell'esempio sono soltanto i più comuni. Parte dei numeri che compaiono come argomenti delle funzioni sono in generale le coordinate dei vertici delle figure (la coordinata 0 0 corrisponde al vertice in alto a sinistra del foglio da disegno virtuale creato con la funzione imagecreate). L'ultimo parametro è il colore usato per disegnare definito preventivamente con la funzione "imagecolorallocate()".
linea.gif
PIENO SUPPORTO PER I DATABASE PIU' DIFFUSI
Fa davvero impressione la lunga lista dei database supportati da PHP3. Ecco l'elenco copiato pari pari dal manuale: Oracle, Adabas D, Sybase, FilePro, mSQL, Velocis, MySQL, Informix, Solid, dBase, ODBC, Unix dbm, PostgreSQL. Non male vero? Insieme a nomi meno noti spiccano i database di colossi come Oracle e Sybase. Quest'ultime, nel corso del 1998, si sono talmente interessate al fenomeno Linux che hanno ben pensato di effettuare un porting del loro software di punta anche per il nostro amato sistema operativo. I db più diffusi rimangono comunque i soliti PostgreSQL , My SQL e mSQL facilmente installabili in un server Linux e per i quali PHP3 vanta un'ottima gamma di strumenti di programmazione. Per usare le funzioni di accesso alla base dati è necessario fornire alcuni parametri speciali durante le operazioni di installazione del linguaggio come vedremo fra poco.
linea.gif
...E MOLTO ALTRO ANCORA
A differenza dei cgi scritti in C o in Perl, con i quali eravamo costretti ad usare librerie o moduli esterni per processare i dati inseriti in un form html, PHP3 esegue la decodifica dell'input in arrivo dalla pagina web in maniera del tutto trasparente. La facilità con cui si risale al contenuto dei campi usati nel form è veramente notevole. Basta infatti far riferimento alle stesse variabili usate per creare il modulo di richiesta dati. L'esempio proposto qui di seguito chiarirà ogni dubbio. Iniziamo preparando il modulo html per l'inserimento di alcuni dati relativi ad una persona: nome, cognome ed età:

<html>
<head>
<title>Form per PHP3</title>
</head>
<body>
<form method=post action=http://localhost/form.php3>
Nome:<input type=text size=20 name=nome><br>
Cognome:<input type=text size=20 name=cognome><br>
Eta':<input type=text size=2 name=eta><br>
<input type=submit value=Ok><input type=reset value=Annulla>
</form>
</body>
</html>

Prepariamo poi il programma PHP3 che elaborerà i dati inseriti nel form per restituire una nuova pagina di risposta:

<html>
<head>
<title>Form per PHP3</title>
</head>
<body>
<font size=+3>

<?php
  echo "Ciao <font color=red>$nome $cognome</font>.<br>";
  echo "I tuoi <font color=green>$eta</font> anni li porti molto bene.";
?>

</font>
</body>
</html>

Facile no? Vi sarete accorti che abbiamo solo referenziato le variabili esattamente come le avevamo scritte nel form html assegnandole ai parametri "name" dei tag <input>. Parte delle altre funzioni di PHP verranno esaminate con calma nelle prossime puntate.
linea.gif
INSTALLARE PHP3
Per installare PHP3, oltre ad una distribuzione recente di Linux completa di kernel, avremo bisogno dei sorgenti di una versione aggiornata del server web Apache. Se volessimo usufruire anche delle funzioni di accesso alle basi dati dovremo assicurarci di aver installato nel pc almeno uno dei data base supportati da PHP3. Supponendo di aver quindi a disposizione Apache 1.3.2 e PHP3 versione 3.0.6 la prima operazione che dobbiamo eseguire è la decompressione in una directory dei due pacchetti .tar.gz, così:

tar -zxf apache_1_3_2.tar.gz
tar -zxf php-3_3_0_6.tar.gz

Poi, come user root, eseguiamo le seguenti istruzioni per configurare e compilare i sorgenti

cd ../apache_1.3.2
./configure --prefix=/www
cd ../php-3.0.6
./configure --with-msql=/usr/local/Minerva --with-gd=/usr/lib --with-apache=../apache_1.3.2 --enable-track-vars
make
make install
cd ../apache_1.3.2
./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
make
make install
cd ../php-3.0.6
cp php3.ini-dist /usr/local/lib/php3.ini

Da notare i tre parametri --with.msql, --with-gd e --enable-track-vars usati per creare il makefile di PHP3. Il primo parametro, con cui indichiamo la directory di installazione del db, è indispensabile per abilitare il supporto del database mSQL. Il secondo è usato per linkare la libreria grafica GD. Il terzo, infine, abiliterà l'uso di alcune variabili speciali utili per gestire i dati inviati da un form html al programma PHP usando i consueti metodi del protocollo http: GET o POST. Arrivati a questo punto completiamo la fase di configurazione editando il file srm.conf di Apache (/www/etc/apache/srm.conf) ed aggiungendo la seguente direttiva

AddType application/x-httpd-php3 .php3

con cui informeremo il server web di riservare un trattamento speciale ai files con estensione .php3. Questo trattamento non è altro che l'interpretazione e l'esecuzione del codice presente in tali files. La fase di installazione è così conclusa. Non ci resta altro che avviare il motore http con il comando /www/sbin/httpd &. Ora possiamo finalmente testare gli esempi proposti in questo articolo ed apprezzare le numerose caratteristiche di PHP3.
linea.gif
SU INTERNET
Per conoscere i linguaggi e i protocolli del web collegarsi a http://www.w3c.org
L'ultima versione del server http Apache può essere scaricata da http://www.apache.org
Documentazione e sorgenti di php3 si trovano presso https://www.php.net

fire.gif

Data creazione HTML: Ottobre 1999
Autore: Francesco Munaretto
E-mail: NoSpam@thank.you
exclaim.gif