<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>Database-SQL-RDBMS HOW-TO document for Linux (PostgreSQL Object Relational Database System): PHP Hypertext Preprocessor - Linguaggio di scripting dal lato server, incorporabile nel codice html, per PostgreSQL </TITLE> <LINK HREF="PostgreSQL-HOWTO-23.html" REL=next> <LINK HREF="PostgreSQL-HOWTO-21.html" REL=previous> <LINK HREF="PostgreSQL-HOWTO.html#toc22" REL=contents> </HEAD> <BODY> <A HREF="PostgreSQL-HOWTO-23.html">Avanti</A> <A HREF="PostgreSQL-HOWTO-21.html">Indietro</A> <A HREF="PostgreSQL-HOWTO.html#toc22">Indice</A> <HR> <H2><A NAME="PHP"></A> <A NAME="s22">22. PHP Hypertext Preprocessor - Linguaggio di scripting dal lato server, incorporabile nel codice html, per PostgreSQL </A></H2> <P>Strumenti di Interfaccia al WWW sono reperibili presso: <UL> <LI> <A HREF="http://www.php.net">http://www.php.net</A></LI> <LI> <A HREF="http://www.vex.net/php">http://www.vex.net/php</A></LI> </UL> Per PHP esiste anche un compilatore chiamato Zend, che ne migliora immensamente le prestazioni. Prima di tutto scriverete la vostra applicazione nel linguaggio di scripting PHP, passando attraverso le fasi di sviluppo, collaudo e correzione degli errori. Quando il progetto sarà pronto per l'utilizzo, userete il compilatore Zend per compilare il codice PHP, così da creare eseguibili che gireranno molto rapidamente. <P>Il vecchio nome di PHP è Professional Home Pages, mentre il nuovo nome è PHP Hypertext Pre-Processor <UL> <LI> Siti Mirror si trovano in molti paesi come www.CODICEPAESE.php.net</LI> <LI> <A HREF="http://www.fe.de.php.net">http://www.fe.de.php.net</A></LI> <LI> <A HREF="http://www.sk.php.net">http://www.sk.php.net</A></LI> <LI> <A HREF="http://php.iquest.net/">http://php.iquest.net/</A></LI> <LI> L'e-mail per eventuali domande è: <A HREF="mailto:rasmus@lerdorf.on.ca">rasmus@lerdorf.on.ca</A></LI> </UL> <P>PHP è un linguaggio di scripting dal lato server, incorporato nel codice html. PHP permette, come Javascript, di scrivere semplici script nei file .HTML ma, al contrario di JavaScript, PHP non è dipendente dal browser. JavaScript è un linguaggio lato client, incorporabile nel codice html, mentre PHP è un linguaggio dal lato server. PHP è concettualmente simile al prodotto LiveWire Pro di Netscape. Se vi piace il software gratuito in rapida evoluzione e fornito del codice sorgente, probabilmente PHP vi piacerà. <P> <UL> <LI> Il codice del supporto di PostgreSQL è stato scritto da Adam Sussman <A HREF="mailto: asussman@vidya.com">asussman@vidya.com</A></LI> </UL> <H2><A NAME="ss22.1">22.1 Le funzionalità più rilevanti</A> </H2> <P> <UL> <LI>Supporto per Standard CGI, FastCGI e modulo di Apache - Come programma CGI standard, PHP può essere installato su qualsiasi macchina Unix su cui giri qualsiasi web server per Unix. Con il supporto per il nuovo standard FastCGI, PHP può trarre vantaggio dall'incremento di velocità ottenuto attraverso questo meccanismo. Come modulo di Apache, PHP diventa un'alternativa alla programmazione CGI estremamente potente, e dotata di <B>velocità fulminante</B>. </LI> <LI> Registrazione degli Accessi - Con la proprietà della registrazione degli accessi di PHP, gli utenti possono conservare i propri conteggi degli accessi e delle registrazioni. Per questo risultato non sono utilizzati in alcun modo i file di registrazione d'accesso del sistema centrale, e viene fornito un controllo degli accessi in tempo reale. Lo script di visualizzazione del Log fornisce un veloce riassunto degli accessi ad un insieme di pagine, appartenenti ad un singolo utente. In aggiunta a ciò, il pacchetto può essere configurato per generare un titolo di coda per ogni pagina che mostri informazioni sugli accessi. (...) </LI> <LI> Controllo degli Accessi: Un meccanismo di filtraggio, basato sul web, gestisce la configurazione del controllo d'accesso. È possibile creare regole per tutte le pagine web che appartengano ad una certa persona, la quale voglia porre diverse restrizioni su chi possa vedere queste pagine, e su come esse saranno viste. Le pagine possono essere o protette da password, o completamente inaccessibili, oppure con registrazione disabilitata, o potranno avere altre forme di controllo ancora; dipende dal dominio del client, dal browser, dall'indirizzo e-mail, o anche dal documento di provenienza. </LI> <LI> Supporto a PostgreSQL - Postgres è un evoluto RDBMS, libero e gratuito. PHP supporta le "query SQL" di PostgreSQL, incorporandole direttamente nei file .html .</LI> <LI> RFC-1867 Supporto per il File Upload - Il File Upload è una nuova funzionalità di Netscape 2.0. Essa permette agli utenti di effettuare il trasferimento di file verso un server web. PHP fornisce la decodifica Mime per compiere quest'operazione, e fornisce anche una procedura di base per realizzare qualcosa di utile con i file, una volta che siano stati ricevuti. </LI> <LI> Controllo dell'autenticazione basata su HTTP - PHP può essere usato per creare meccanismi di autenticazione personalizzati, basati su HTTP, per il server web Apache. </LI> <LI> Variabili, Array, Array Associativi - PHP supporta diversi tipi di variabili, gli array, ed anche gli array associativi, simili a quelli del Perl. I valori assunti da tutti questi tipi di dati possono essere passati da una pagina web ad un'altra, usando form con i metodi GET o POST. </LI> <LI> Condizionali, Cicli con While - PHP supporta un linguaggio di scripting simile al C, e pieno di funzionalità. Ciò che della pagina web dovrebbe essere visualizzato, viene deciso con l'uso delle strutture condizionali if/then/elseif/else/endif, dei cicli con while, e dell'istruzione switch/case. </LI> <LI> Espressioni Regolari Estese - Le espressioni regolari vengono intensamente utilizzate per pattern matching (comparazione con modelli di stringa, n.d.t.), per sostituzione di modelli (di stringa, n.d.t.), e per manipolazione di stringhe in generale. PHP supporta tutte le comuni operazioni realizzate con le espressioni regolari. </LI> <LI> Controllo degli Header Raw HTTP - La capacità delle pagine web di poter inviare header raw HTTP, in base a qualche condizione, è essenziale per la progettazione ad alto livello dei siti web. È di uso frequente l'invio di una Location: l'header URL redirige il client chiamante verso qualche altro URL. Può essere anche impiegato per disabilitare il caching, oppure per manipolare l'ultimo aggiornamento dell'intestazione delle pagine. </LI> <LI> Creazione di immagini GIF in tempo reale - PHP supporta la libreria di immagini GD di Thomas Boutell, che rende possibile generare "al volo" immagini GIF. </LI> <LI> Supporto al "Safe Mode" ISP - PHP supporta una singolare modalità di protezione, "Safe Mode", che rende sicura l'esecuzione degli script PHP da parte di molti utenti presenti sullo stesso server. </LI> <LI> Molte altre funzionalità vengono aggiunte in ogni nuova versione di PHP. Visitate il sito web principale presso <A HREF="http://www.php.net">http://www.php.net</A> </LI> <LI> È libero e gratuito! - Questa è una qualità fondamentale e decisiva. Il pacchetto è completamente libero. È posto sotto la licenza GNU/GPL, che consente di usare il software per qualsiasi proposito, che sia commerciale o no.</LI> </UL> <H2><A NAME="ss22.2">22.2 PHP - Breve Storia</A> </H2> <P>Il PHP ha preso vita come un piccolo, semplice wrapper (incapsulatore) cgi scritto in Perl. Il nome di questo primo pacchetto era Personal Home Page Tools, che più tardi si trasformò in Personal Home Page Construction Kit. <P>Per includere facilmente le query SQL nelle pagine web, fu scritto un tool apposito. Quest'ultimo era, fondamentalmente, un altro wrapper CGI che analizzava sintatticamente le query SQL, e che ha reso facile la creazione di form e tabelle basate su queste query. Questo strumento è stato denominato FI (Form Interpreter). <P>La versione 2.0 di PHP/FI è una riscrittura completa di questi due pacchetti combinati in un singolo programma. PHP è evoluto verso un semplice linguaggio di programmazione, inglobato dei file HTML. PHP elimina la necessità dei tanti piccoli programmi cgi Perl, permettendovi di posizionare semplici script direttamente nei vostri file HTML. Ciò accelererà le prestazioni complessive delle vostre pagine web, poiché viene eliminato l'overhead dovuto alle numerose biforcazioni (forking) di Perl. PHP rende anche più facile gestire siti web estesi, posizionando tutti i componenti di una pagina web in un singolo file html. Includendo il supporto per vari database, viene anche reso banale lo sviluppo di pagine web con accesso ai database. Molte persone trovano che l'incorporazione di codice sia molto più facile da gestire, rispetto alla creazione di file HTML e CGI separati. <P>Oggi PHP/FI è stato rinominato PHP. <H2><A NAME="ss22.3">22.3 Ebbene, cosa posso fare con PHP ?</A> </H2> <P>La prima cosa su cui porre attenzione, se volete eseguire una pagina con PHP, è che viene aggiunto un titolo, a piede di pagina, con informazioni riguardanti il numero di volte in cui la vostra pagina è stata visitata (purché nel binario sia stata compilata la gestione della registrazione degli accessi). Questa è solo una piccolissima parte di ciò che PHP può fare per voi. Infatti gioca un altro importantissimo ruolo come interprete di form cgi, che rende conto della parte FI del vecchio nome. Per esempio, se create un form su una delle vostre pagine web, avrete bisogno di qualcosa per elaborare l'informazione raccolta da quel form. Anche se volete soltanto passare l'informazione ad un'altra pagina web, dovrete avere un programma cgi che lo faccia per voi. PHP rende estremamente facile ricevere i dati del form, e lavorare con essi. <H2><A NAME="ss22.4">22.4 Un semplice esempio</A> </H2> <P>Supponete di avere un form: <BLOCKQUOTE><CODE> <PRE> <FORM ACTION="/cgi-bin/php.cgi/~userid/display.html" METHOD=POST> <INPUT TYPE="text" name="name"> <INPUT TYPE="text" name="age"> <INPUT TYPE="submit"> <FORM> </PRE> </CODE></BLOCKQUOTE> Il vostro file display.html potrebbe allora contenere qualcosa come: <BLOCKQUOTE><CODE> <PRE> <?echo "Ciao $name, hai $age anni!<p>" > </PRE> </CODE></BLOCKQUOTE> È questa la semplicità! PHP crea automaticamente una variabile per ogni campo di input del form. Potete così usare queste variabili nel file dell'URL, che compare come argomento di ACTION. <P>Il passo successivo, una volta che avete compreso come usare le variabili, è iniziare a inserire qualche tag per la gestione del flusso logico, nelle vostre pagine. Per esempio, se volete visualizzare diversi messaggi al variare dell'input dell'utente, dovreste usare le istruzioni logiche if/else. Sulla scorta dell'esempio sopra riportato, possiamo visualizzare diverse cose, a seconda dell'età che l'utente inserisce. Cambiamo il nostro display.html come segue: <BLOCKQUOTE><CODE> <PRE> <? if($age>50); echo "Ciao $name, sei anziano!<p>"; elseif($age>30); echo "Ciao $name, sei molto vecchio!<p>"; else; echo "Ciao $name."; endif; > </PRE> </CODE></BLOCKQUOTE> PHP fornisce un linguaggio di scripting molto potente, che realizzerà molto più di quanto il precedente esempio dimostri. Vedere la sezione relativa al Linguaggio Script PHP per altre informazioni. <P>Potete usare PHP anche per configurare i permessi d'accesso alle vostre pagine. Ciò può essere fatto usando un meccanismo incorporato di filtraggio (nella struttura del PHP n.d.t). Con esso potreste, per esempio, specificare che solo persone di certi domini abbiano accesso alla visualizzazione delle vostre pagine; oppure potreste creare una regola che protegga con password certe pagine. Vedere la sezione relativa al Controllo d'Accesso per altri dettagli. <P>PHP è anche in grado di ricevere file da qualsiasi browser web, aderente alle specifiche RFC-1867. Questa caratteristica permette che si possa fare il caricamento sia di testi, sia di binari. Col controllo d'accesso del PHP e le sue funzioni logiche, avete pieno controllo su chi abbia il permesso di caricare un file su server, e su cosa possa essere fatto con il file una volta che sia stato ricevuto. Leggere la sezione File Upload per altri dettagli. <P>PHP ha il supporto per il pacchetto del database PostgreSQL. PHP supporta query SQL inserite nei vostri file .HTML . <P>PHP fornisce anche supporto per il pacchetto di database mysql. PHP supporta le query SQL inserite nei vostri file .HTML . <H2><A NAME="ss22.5">22.5 Ridirezione CGI</A> </H2> <P> <H3>Note su Apache 1.0.x</H3> <P>Impiegare un modulo di ridirezione cgi, con il server Apache, è un buon modo di eseguire PHP. Notate che non dovete preoccuparvi dei moduli di ridirezione, se state usando PHP nella forma di modulo di Apache. Sono disponibili due di questi moduli di ridirezione. Uno di questi è stato sviluppato da Dave Andersen <UL> <LI> <A HREF="mailto:angio@aros.net">angio@aros.net</A></LI> </UL> ed è reperibile presso <UL> <LI> <A HREF="ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c">ftp://ftp.aros.net/pub/util/apache/mod_cgi_redirect.c</A></LI> </UL> L'altro è distribuito con Apache, ed è chiamato mod_actions.c. I due moduli sono molto simili. Differiscono leggermente nel loro uso. Sono stati testati entrambi, ed entrambi funzionano con PHP. <P>Cercate, nella documentazione di Apache, le informazioni su come aggiungere un modulo. Generalmente si aggiunge il nome del modulo in un file chiamato Configuration. Se volete usare il modulo mod_actions, la riga da aggiungere è: <P>Module action_module mod_actions.o <P>Se state usando il modulo mod_cgi_redirect.c , aggiungete questa riga: <P>Module cgi_redirect_module mod_cgi_redirect.o <P>Poi compilate il vostro httpd, ed installatelo. Per configurare la ridirezione cgi dovrete o creare un nuovo tipo mime nel vostro file mime.types, oppure potete usare il comando AddType nel vostro file srm.conf, per aggiungere il tipo mime. Il tipo mime da aggiungere dovrebbe essere qualcosa come questo: <BLOCKQUOTE><CODE> <PRE> application/x-httpd-php phtml </PRE> </CODE></BLOCKQUOTE> Se state usando il modulo mod_actions.c, dovrete aggiungere la seguente riga al vostro file srm.conf : <BLOCKQUOTE><CODE> <PRE> Action application/x-httpd-php /cgi-bin/php.cgi </PRE> </CODE></BLOCKQUOTE> Se state usando mod_cgi_redirect.c, dovreste aggiungere questa riga a srm.conf: <BLOCKQUOTE><CODE> <PRE> CgiRedirect application/x-httpd-php /cgi-bin/php.cgi </PRE> </CODE></BLOCKQUOTE> Non provate ad usare, nello stesso tempo, mod_actions.c e mod_cgi_redirect.c. <P>Una volta che uno di questi moduli di ridirezione cgi siano stati installati e configurati correttamente, sarete in grado di far eseguire l'analisi sintattica del PHP sui file di estensione .phtml. Per di più, se aggiungete index.phtml alla riga di configurazione chiamata DirectoryIndex del vostro file srm.conf, e se il vostro file index si chiama index.phtml, allora la pagina di massimo livello in una directory sarà automaticamente processata da php. <H3>HTTPD di Netscape</H3> <P>Potete automaticamente ridirigere le richieste di file con una data estensione, e farle gestire da PHP, usando il modulo Redirection CGI del Server Netscape. Questo modulo può essere trovato negli Archivi di File dell'Home Page di PHP. Il file README nel pacchetto, spiega esplicitamente come configurarlo per usarlo con PHP. <H3>HTTPD di NCSA</H3> <P>Attualmente NCSA non supporta i moduli; così, volendo effettuare ridirezioni cgi con questo server, dovrete modificare il codice sorgente del server. Negli archivi di file di PHP esiste una patch, adatta allo scopo, per NCSA 1.5 <H2><A NAME="ss22.6">22.6 Eseguire PHP dalla riga di comando</A> </H2> <P>Se avete compilato la versione CGI di PHP, potete usarla dalla riga di comando semplicemente digitando: php.cgi nome_file, dove nome_file è il file che volete processare. Potete anche creare script PHP autonomi inserendo, sulla prima riga del vostro script, quanto segue: <BLOCKQUOTE><CODE> <PRE> #!/usr/local/bin/php.cgi -q </PRE> </CODE></BLOCKQUOTE> La "-q" sopprime la stampa degli header HTTP. Potete anche non mettere quest'opzione, se volete. <H2><A NAME="ss22.7">22.7 Pacchetto PHPGem</A> </H2> <P>PHPGem è uno script PHP che accelera la creazione di script PHP specifici per lavorare con le tabelle. Funziona con diversi server SQL come PostgreSQL, MySQL, mSQL, ODBC, e Adabas. Voi inserite una descrizione e i parametri per i campi delle vostre tabelle (nome del campo, possibilità o no di ricerca nel campo, ecc.), e PHPGem fornisce in output un altro script PHP, che lavorerà con le tabelle (per visualizzazione / inserimento / modifica / cancellazione / duplicazione e per ricerche). PHPGem funziona con tabelle annidate in livelli multipli. Inoltre è consentito indicare un livello d'accesso per ogni tabella, per ogni campo, e per ogni utente. PHPGem supporta anche le immagini. <P>PHPGem si trova presso <A HREF="http://sptl.org/phpgem">http://sptl.org/phpgem</A><HR> <A HREF="PostgreSQL-HOWTO-23.html">Avanti</A> <A HREF="PostgreSQL-HOWTO-21.html">Indietro</A> <A HREF="PostgreSQL-HOWTO.html#toc22">Indice</A> </BODY> </HTML>