Indice

Parte Prima
Introduzione
I pacchetti e l'installazione
Sintassi di base e tipi
Una questione di stile

Parte Seconda
Ancora sul linguaggio
I commenti
Operatori ed espressioni
Controllo del flusso

Parte Terza
Installazione in ambiente PWS (W9X, WNTwks, ME, XP, W2000pro)
Le costanti
Le funzioni
Mantenimento dello stato: Le sessioni

Parte Quarta
Mantenimento dello stato: I cookie
Comunicazione con l'utente: i form
Uso del metodo GET
Uso del metodo POST e i form

Parte Quinta
Installazione in ambiente Linux
Le funzioni Include() e Require()
La funzione mail()
Upload dei file

Parte Sesta
L'uso dei database

Parte Settima
La connessione al database e la visualizzazione dei dati

Parte Ottava
Autenticazione http
Compatibilità dell'autenticazione HTTP?
La lettura e scrittura dei dati utente.
Precisazioni sull'installazione di MySQL sotto Windows 2000 Server

Parte Nona
I Socket

Parte Decima
Il debugger
L'editor
Le risorse



Introduzione
Hypertext Preprocessor (preprocessore di ipertesti) è un software open source, concorrente diretto di ASP, Perl, JSP, CGI e qualunque altra soluzione scripting lato server, è un linguaggio di script immerso nel HTML. Molta della sua sintassi è presa in prestito dai linguaggi C, Java e Perl, a cui sono state aggiunte alcune specifiche caratteristiche del PHP.
Effettivamente dopo la comprensibile ebbrezza che si prova nel vedere il proprio testo HTML visualizzato su qualsiasi computer collegato ad Internet, sorge successivamente l'esigenza di rendere il proprio sito interattivo ed anche il cruccio sulla portabilità del proprio software, combinata alla facilità d'uso, alla scalabilità e alla robustezza.
Di primo acchito, potremmo orientarci verso il C o C++, ma ambedue richiedono, oltre alla consapevolezza di trovarsi di fronte a linguaggi di basso livello, anche un'approfondita conoscenza del SO ospite, anzi, se guardiamo alla portabilità, di più SO ospiti!
Chi non dovesse mai trovarsi in simili condizioni può dormire sonni tranquilli, ma con l'evoluzione attuale del software, sempre più orientato alla facilità end-user, ci si aspetta che un programmatore, dinanzi a nuove scelte o soluzioni, sia abbastanza versatile da affrontarle con agilità.
Il PHP in questi casi è un'ottima soluzione, anche perché, essendo open source, consente di imparare molto dal codice sorgente e, se si conosce il linguaggio C/C++, è veramente semplice da apprendere.

I pacchetti e l'installazione
E' veramente impressionante la quantità di ambienti di sviluppo (UNIX, Unix/Linux, Unix/HP-UX, Unix/Solaris, Unix/OpenBSD, Unix/Mac OS X, Windows 9X/NT/2000/XP, Apache, CGI/Commandline, fhttpd, Caudium, IIS/PWS, Netscape and iPlanet, OmniHTTPd Server, Oreilly Website, Pro, Xitami), di database (Oracle, Informix, Interbase, MS SQL, mySQL, PostgreSQL ecc.) e di fonti (ODBC, attraverso moduli software supportati da terzi o via ADO, ecc.) supportati.
Nel nostro esempio, l'ambiente operativo è WinNT (nessuna differenza con Win2000) con IIS 4.0. Dopo aver scaricato i pacchetti e il manuale in italiano (ma è preferibile quello in inglese), iniziamo l'installazione di php410-installer.exe nella versione 4.1.0, che crea una directory c:\php, che contiene due subdirectory (sessiondata e uploaditem) e quattro file (install.txt, license, php.exe, php4ts.dll).
Letta ed accettata la licenza d'uso, seguendo le istruzioni nel file install.txt, passiamo all'installazione vera e propria del nostro super CGI.
Copiamo php4ts.dll in c:\winnt\system32\, avviamo Internet Service Manager, clicchiamo col tasto destro su Default Web Server e scegliamo Properties; passiamo alla cartella Home Directory e clicchiamo sul tasto Configuration e in App Mapping clicchiamo su Add: in Executable indichiamo la directory dove si trova php.exe (generalmente c:\php\php.exe) e in Extension l'estensione php; premiamo OK fino a chiudere la tab sheet di Properties, stoppiamo e riavviamo il servizio http.
A questo punto, dopo aver scritto e salvato (prova.php) il nostro primo script nella WWWroot

script PHP (lato server)
<HTML>
<HEAD>
<TITLE>prova</TITLE>
</HEAD>
<BODY>
<?php
echo "mod php bnbmbmbmbmnbnm";
echo "\n<br>";

$num = 20; # intero
$prezzo = 345.45; # in virgola mobile
$grand = 'large'; # stringa
$myarray[0] = "rosso"; # array scalare, primo elemento (0)
$myarray["qwe"] = 6; # array associativo, elemento "qwe"

$var = "rosso $prezzo\n <BR>";
echo $var;

$var = 'verde $prezzo <BR>'; # qui non si puo usare \n
echo $var;

echo "$HTTP_USER_AGENT\n <BR>";
?>
</BODY>
</HTML>
output codice HTML (lato client)
<HTML>
<HEAD>
<TITLE>prova</TITLE>
</HEAD>
<BODY>
mod php bnbmbmbmbmnbnm
<BR>rosso 345.45
<BR>verde $prezzo <BR>Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Virgilio3pc; Q312461)
<BR></BODY>
</HTML>
output browser (lato client)
mod php bnbmbmbmbmnbnm
rosso 345.45
verde $prezzo
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Virgilio3pc; Q312461)

eseguiamolo dal client e vedremo comparire correttamente le informazioni richieste.


Sintassi di base e tipi
Abbiamo salvato il file con l'estensione .php, ma avremmo potuto anche salvarlo come .php4 o .html in relazione all'impostazione di php nel file di configurazione del server Web (nel nostro caso IIS).
Il codice è racchiuso in uno dei seguenti tag:

<?php
echo "la mia casa";
?>


oppure

<? echo "la mia casa"; ?>

oppure

<script language = "php" > echo "la mia casa"; </script>

Il comando echo invia l'output sul browser client e dopo ogni istruzione php c'è necessariamente il punto e virgola (;) come carattere di fine istruzione, mentre è poco importante che le istruzioni si trovino tutte nella stessa riga di codice, indentate o su diverse righe.
PHP può operare numeri interi, in virgola mobile, stringhe, array e oggetti tutti preceduti dal segno di dollaro ($) e sono tutti case sensitive. I valori delle stringhe possono essere racchiusi sia dai doppi apici ("), che dai apici singoli ('), e, come si può notare dall'esempio precedente, nel primo caso la variabili sono valutate, mentre quelle racchiuse dagli apici singoli non lo sono.
Le variabili presenti in ogni script PHP sono locali, mentre quelle incorporate in uno script con l'istruzione INCLUDE sono globali.

Ma si possono usare anche gli oggetti:
prima dichiarati

class myobj {
   function do_myobj ($par) {
       echo "la classe myobj con parametro $par. ";
   }
}

poi definiti dall'istruzione new

$var = New myobj;
$var -> do_myobj(8);

che avrà il seguente output

la classe myobj con parametro 8.

I tipi booleani posso essere usati sapendo che PHP considera una variabile che contiene qualcosa TRUE, mentre considera FALSE una che è indefinita, nulla o zero.

if $myVar {
     ... istruzioni ...;
}   # FALSE


invece

$myVar = "la mia casa";
if $myVar {
     ... istruzioni ...;
}   # TRUE



Per conoscere le variabili predefinite dal proprio sistema bisogna usare la funzione

phpinfo();

nell'esempio precedente, $HTTP_USER_AGENT è solo una tra le tante.

Una questione di stile
Ogni buon programmatore sa che è importante lo stile imposto dal linguaggio, ma soprattutto quello che mira alla chiarezza, alla semplicità e alla snellezza del proprio codice.
Indentare è sempre importante, ma le variabili devono essere sempre chiare, soprattutto nel caso particolare di questo linguaggio che decide al momento dell'assegnazione il tipo di variabile utilizzata.
Si potrebbero usare prefissi importati da altri linguaggi come il C o C++: int per gli interi, fl per la virgola mobile, str per le stringhe, ar per gli array, obj per gli oggetti e bo per le booleane; le variabili usate prima dovrebbero essere corrette in questo modo:

$num $prezzo $grand $myarray[0] $var $myVar
$intnum $flprezzo $strgrand $armyarray[0] $objvar $bomyVar

Attenzione: gli esempi qui mostrati funzionano con copia e incolla a patto che vengano tolti tutti i caratteri superflui (colore, spaziatura ecc.), utili per una migliore visualizzazione sui browser, ma fastidiosi per il parser PHP!

Pagina successiva