Nel giugno 1995 Rasmus Lerdof annuncia su comp.infosystem.www.authoring.cgi il rilascio di un piccolo insieme di file binari scritti in C con il fine di registrare le visite alla pagina web contenente il suo curriculum...
A settembre viene rilasciato FI (Form Interpreter) un parser di pagine HTML con la possibilità di interagire con mSQL a fine 1995 PHP/FI è già utilizzato da diversi beta-tester e sviluppatori.
Nel Novembre 1997 esce la PHP/FI 2.0 che supporta mSQL, Postgres95 e MySQL, pare che fosse già usato da 50mila domini.
Il salto di qualità avviene nel giugno 1998 con PHP3 grazie a due israeliani Zeev Suraski e Andi Gutmans che hanno creato un parser chiamato Zend Engine (la versione 2 è inclusa in PHP 5). I punti di successo di PHP 3 furono il nuovo parser, il supporto di altri database, la compatibilità con Windows e soprattutto il numero crescente di sviluppatori che garantivano una continuità e una larga base di testing. PHP3 pare fosse installato sul 10% dei domini dell’epoca.
Nel maggio 2000 esce PHP 4, non più con licenza GPL ma PHP license (più restrittiva ma sempre open source) che supporta nativamente le sessioni e offre una modularità avanzata.
Ben 4 anni dopo viene rilasciato PHP 5 che tramite Zend Engine 2 introduce un nuovo modello di programmazione ad oggetti, interazione con file XML e il supporto di Web Services.
L'utilizzo più immediato di PHP rimane quello per cui è nato: la gestione dell'iterazione tra l'utente e un database.
Anche se ad un primo approccio questo può sembrare riduttivo, a detta dell'autore può rientrare in questa categoria almeno l'80% delle applicazioni web. Possono infatti rientrare in questa categoria sia un semplice forum o guestbook che un'applicazione avanzata ad esempio di internet banking o un motore di ricerca.
PHP offre sia gli strumenti necessari a manipolare nei modi più disparati l'input ricevuto, nel caso più classico da una form
HTML sia funzioni native per il mantenimento dei dati in un database MySQL che la possibilità di utilizzare invece altri database OpenSource come PostgreSQL o mSQL oppure proprietari come Oracle, Sybase, MS SQL o altri anche tramite ODBC.
Una modalità di utilizzo più di nicchia ma che sta comunque prendendo piede anche grazie alla versalità e alle funzioni native offerte dal linguaggio è lo scripting da console, cioè il realizzare script che verranno lanciati direttamente da riga di comando o tramite schedulatori come possono essere cron
per ambienti UNIX-like oppure task scheduler
o winat
per ambienti Microsoft.
Infine esiste la possibilità, a dire il vero non molto sfruttata, di implementare applicazioni con interfacce grafiche (GUI) tramite il supporto fornito a GTK.
Come già accennato l'interprete PHP è disponibile sia per molti flavour UNIX che per Windows, ma anche per MacOS X. E' installabile come modulo su Apache e come CGI sui web server più diffusi da IIS a Netscape a iPlanet fino al piccolo Xitami.
Il linguaggio PHP offre funzioni per creare on-fly e modificare direttamente non solo file di tipo HTML o XHTML o XML ma anche immagini, file Acrobat (PDF) e addirittura filmati Flash. Sono inoltre presenti funzioni per interagire con i protocolli più comuni come LDAP, IMAP, NNTP, POP3, HTTP, FTP e COM Windows oppure per utilizzare classi Java esterne o ancora per utilizzare Espressioni Regolari o archivi (gzip).
Il concetto base da assimilare prima di intrappredere qualsiasi sviluppo legato al Web è individuabile nella distinzione tra script server-side e script client-side.
A prescindere dai protocolli di ricerca del server (DNS) e di trasmissione dei dati (HTTP basato su TCP/IP) che verranno utilizzati per trasferire una pagina dal web server al client dell'utente è fondamentale capire come il contenuto della pagina venga generato e interpretato.
La programmazione lato server è dedicata proprio alla generazione del contenuto, sia esso HTML, XML, JPEG/GIF o qualsiasi altro formato che sarà successivamente inviato al client (sia esso un browser grafico come Internet Explorer o Mozilla oppure un client testuale come Linx o addirittura un comando che cattura l'output di una chiamata HTTP come wget).
Il flusso legato ad una richiesta del browser può essere delineato, semplificando, in questi passaggi:
1- il web server che riceve la richiesta cerca (fetch) all'interno del file system dell'host su cui gira, il file sorgente associato
2- in base alla configurazione del web server questo file può venire o meno processato da un interprete che ne effettuerà un parsing eseguendo ciò che riconoscerà essere un'istruzione
3- il contenuto ottenuto, assieme ad indicazioni sulla tipologia dello stesso, viene ritornato al browser
4- il browser legge il MIME type del file predisponendosi ad interpretarlo, eventualmente utilizzando plug-in associati al particolare tipo
5- il contenuito viene finalmente mostrato all'utente
PHP è un linguaggio che viene interpretato sul server e, nel caso sia stato installato come modulo, dal web server. Questo significa che l'utente non vedrà mai, se il file è stato correttamente interpretato, il codice sorgente ma piuttosto il risultato delle elaborazioni che sono state effettuate sul web server remoto, in generale mostrate tramite HTML.
D'altra parte linguaggi come Javascript sono interpretati direttamente dal client. Cioè il browser quando incontra dei tag (in genere del tipo ) si attiva per eseguire le istruzioni che vi sono incluse.
Può essere banale ma deve essere ben chiaro che le informazioni legate all'esecuzione di script client-side non sono utilizzabili dagli script server-side a meno che esse vengano esplicitamente inviate al server tramite una ulteriore chiamate HTTP.
Esistono sul web numerosi siti che trattano PHP e forniscono risorse, documentazione, informazioni, notizie.
www.php.net è il sito ufficiale del linguaggio PHP.
In http://www.php.net/downloads.php è possibile scaricare le versioni stabili e le nuove release del linguaggio oltre a Fix e Patch di sicurezza per le versioni pià datate.
Il sito fornisce documentazione dettagliata, completa e commentata dalla community. In http://www.php.net/manual/it/ si trova un ottimo manuale online (in italiano).
Zend Technologies ( www.zend.com ) è la società, fondata dai principali autori di PHP, che ha ha sviluppato l'engine del PHP e propone vari prodotti commerciali per lo sviluppo, la gestione, l'ottimizzazione e l'encoding di codice PHP.
Esistono inoltre numerosi siti sul mondo php, i migliori sono linkati e divisi per categoria in http://www.php.net/links.php.
Per percepire meglio la differenza tra le azioni svolte dal browser (quindi lato client) e quelle invece a carico del server vediamo un semplice codice HTML che mostra come il browser permette di vedere i file presenti sul client.
<html>
<form>
<input type="file" name="client">
</form>
</html>