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 PHP parte prima testo Francesco Mannarino mailto fm docenti org Introduzione Hypertext Preprocessor preprocessore di ipertesti http www PHP net un software OpenSource 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 visulizzato 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 alla robustezza e alla portabilit Di primo acchito l orientamento potrebbe essere verso il C o C ma ambedue obbligano oltre alla consapevolezza di trovarsi di fronte a linguaggi di basso livello anche una 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 del software oggi sempre pi orientato alla facilit end user non si pu certo pretendere che un programmatore posto dinanzi a nuove scelte o soluzioni non possa avere quel minimo di versatilit nell affrontare con agilit le nuove problematiche Scegliere il PHP in questi casi un ottima soluzione anche perch essendo OpenSource c parecchio da imparare dal codice sorgente e se si conosce il linguaggio C C veramente semplice da apprendere I pacchetti e l installazione Gli 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 i database Oracle Informix Interbase MS SQL mySQL PostgreSQL e le fonti ODBC attraverso moduli software supportati da terzi o via ADO supportati sono veramente impressionanti Il nostro ambiente operativo WinNT nessuna differenza con Win2000 con IIS 4 0 e dopo aver scaricato i pacchetti http www PHP net downloads PHP e il manuale in italiano ma preferibile quello in inglese http www PHP net docs PHP 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 licensa d uso seguendo le istruzioni nel file install txt passiamo all installazione veria e propria del nostro super CGI Copiamo PHP4ts dll in c winnt system32 avviamo Internet Service Manager facciamo click col tasto destro su Default Web Server e scegliamo Properties passiamo alla cartella Home Directory e facciamo click sul tasto Configuration ed in App Mapping facciamo click 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 fin quando non chiudiamo 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 prova PHP echo mod PHP bnbmbmbmbmnbnm echo n 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 echo var var verde prezzo qui non si puo usare n echo var echo HTTP USER AGENT n output codice HTML lato client prova mod PHP bnbmbmbmbmnbnm rosso 345 45 verde prezzo Mozilla 4 0 compatible MSIE 6 0 Windows 98 Virgilio3pc Q312461 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 in Figura 1 1 Figura 1 1 Sintassi di base e tipi Abbiamo salvato il file con l estensione PHP ma avremmo potuto anche salvarlo come PHP4 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 oppure oppure echo la mia casa Il comando echo invia l output sul broser 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 identate 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 su riportato nel primo caso la varibili racchiuse in esse sono valutate 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 istrzione 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 variabilie che contiene qualcosa TRUE mentre una che indefinita nulla o zero FALSE if myVar istruzioni FALSE invece myVar la mia casa if myVar istruzioni TRUE Per sapere le variabili predefinite dal proprio sistema bisogna usare la funzione PHPinfo nell esempio riportato su HTTP USER AGENT solo una delle tante Una questione di stile Ogni buon programmatore sa che lo stile imposto dal linguaggio importante ma soprattutto quello che mira alla chiarezza alla semplicit e alla snellezza del proprio codice Identare 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 dal 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 ed incolla a patto che vengano tolti tutti i caratteri superflui colore spaziatura utili per una migliore visualizzazione sui browser ma fastidiosi per il parser PHP PHP parte seconda testo Francesco Mannarino mailto fm docenti org Ancora sul linguaggio Contrariamente allo C non necessario dichiarare una variabile prima di usarla mentre la conversione di una variabile in una altro tipo di dati analoga mediante il typecasting o con la funzione settype prova PHP da floating point a stringa intvar int 23 3222 echo intvar intvar n da intero a stringa strvar string 234 qwe echo strvar strvar n da floating point a stringa flvar float 123 56 echo flvar flvar n I commenti Operatori ed espressioni Molto simile al linguaggio C il modo in cui sono trattate le espressioni cio ci che viene valutato tra queste quelle di assegnamento semplice che abbiamo gi osservato flmiaVar 123 322 un assegnazione floating point Operatori artimetici basta osservarli per rendersene conto somma di a e b sottrazione fra a e b prodotto di a e b rapporto di a e b resto della divisione di a e b Operatori di assegnazione azzeriamo la variabile a 6 a 12 b 13 a 13 c 13 a 12 c 5 a 5 Operatori di confronto myvar myvar2 myvar myvar2 myvar myvar2 myvar myvar2 myvar myvar2 myvar myvar2 myvar myvar2 vero se entrambi i valori delle varibili sono veri vero se entrambi i valori delle variabili sono veri e sono dello steso tipo vero se la prima variabile ha un valore inferiore della seconda vero se la prima variabile ha un valore inferiore o uguale alla seconda vero se la prima variabile ha un valore maggiore della seconda vero se la prima variabile ha un valore maggiore o uguale alla seconda vero se le varibili hanno valori differenti vero se le variabili hanno valori e tipi differenti Operatori sui bit var1 b 8 if a b print a e b sono uguali else print a e b sono diversi oppure a 8 b 8 If a b print a minore di b elseif a b print a uguale di b switch intvar 3 switch intvar case 0 echo intvar contiene 0 break case 1 echo intvar contiene 1 break case 2 echo intvar contiene 2 break case 3 echo intvar contiene 3 break default echo intvar contiene intvar While ciclo loop di istruzioni ripetute finch non si verifica una condizione for che valuta tre espressioni e foreach che permette di scorrere i valori di una array PHP echo n primo loop n valutazione iniziale stampa numeri da 1 a 99 intvar 0 while intvar 100 echo intvar echo n echo n secondo loop n valutazione finale stampa numeri da 1 a 99 intvar 0 do echo intvar echo n while intvar 100 echo n terzo loop n for stampa numeri da 1 a 99 for intvar 0 intvar 100 intvar echo intvar n echo n quarto loop n foreach arMyArray array 1 2 3 17 foreach arMyArray as valore print Valore corrente di arMyArray valore n PHP parte terza testo Francesco Mannarino mailto fm docenti org Installazione in ambiente PWS W9X WNTwks ME XP W2000pro 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 e accettata la licenza d uso seguendo le istruzioni nel file install txt passiamo all installazione vera e propria del nostro super CGI L ambiente non un server e non potendo gestire servizi deve essere configurato in modo che possa interpretare correttamente la presenza dei file con estensione PHP Eseguiamo perci il programma di gestione del file di registro regedit exe ci portiamo su HKEY LOCAL MACHINE System CurrentControlSet Services W3Svc Parameters ScriptMap facciamo click col tasto dx su ScriptMap e scegliamo nuova stringa assegniamo al nome l estensione PHP e ai dati il percorso del nostro CGI cio c PHP PHP exe Poi ci portiamo su HKEY CLASSES ROOT facciamo click col tasto dx e scegliamo nuova chiave scrivendo la nuova estensione PHP evidenziamola e passiamo al pannello destro doppio clic sul nome predefinito e digitiamo PHPfile se desideriamo avere anche altre estensioni dobbiamo ripetere la stessa operazione Ora bisogna creare una nuova chiave quindi tasto dx e scegliamo nuova chiave PHPfile evidenziamo la chiave doppio clic sul nome predefinito e digitiamo PHP script creiamo una nuova chiave in PHPfile tasto dx e scegliamo nuova chiave shell poi una sotto chiave open ancora una sottochiave command doppio clic sul nome predefinito e digitiamo esattamente c PHP exe q 1 Chiudiamo Regedit e riavviamo il sistema per rendere effettive le modifiche Tra l altro se non sapevate come inserire correttamente un estensione questo ci che bisogna apprendere per comodit ho salvato le informazioni in un file allegato al testo che si potr comodamente editare se il percorso di PHP exe diverso da quello impostato ricordandoci che lo slash doppio per i path Infine settare l accesso in Esecuzione alle cartelle che contengono i file PHP Per essere sicuri che tutto sia andato bene creiamo un file PHP che contenga le informazioni sull installazione usando la funzione PHPinfo eseguiamolo dal client e vedremo comparire correttamente le informazioni richieste in Figura 3 1 Figura 3 1 Le costanti Si definiscono con la funzione define naturalmente non possono essere ridefinite e sono globali Non va anteposto il simbolo del dollaro come per le variabili vale solo per i tipi boolean integer double string Le funzioni Come nel linguaggio C le subroutine sono solo funzioni con o senza argomenti e con identica struttura Nell esempio test mostrato le variabili sono passate per valore ma posso essere passate anche per riferimento oppure argomenti di default come in C oppure PHP function CostruisciCasa Modello villa return Costruisci una Modello n echo CostruisciCasa stampa costruisci una villa echo echo CostruisciCasa catapecchia stampa costruisci una catapecchia Mantenimento dello stato Le sessioni La funzione session start inizializza una variabile per poter essere usata nelle stesse pagine session register strarg1 strarg2 registra la variabile nel server e session is registered strarg1 verifica che la variabile sia effettivamente registrata PHP session start if session register mionome echo sessione attiva mionome la mia sessione else echo sessione non attiva echo adesso verifico la sessione if session is registered mionome echo mionome else echo sessione fallita Ci sono altre quindici funzioni per manipolare le sessioni ma come in ASP Active Server Page JSP Java Server page anche in PHP valgono le solite raccomandazioni Le variabili di sessione risiedono sul server perci lo sovraccaricano i cookie risiedono sul client ma non sappiamo se questi saranno accettati dal client per possiamo anche passare le variabili da una pagina all altra semplicemente tramite l URL come in ASP e JSP http IndirizzoServer MiaPagina PHP variabile casa dopo la pagina richiesta facciamo seguire un punto interrogativo nome della variabile variabile segno uguale e infine la variabile casa la pagina PHP MiaPagina PHP dovr solo avere la variabile variabile che potr essere immediatamente utilizzata Bisogna solo ricordarsi che dopo il punto interrogativo non ci deve essere alcuno spazio PHP parte quarta testo Francesco Mannarino mailto fm docenti org Mantenimento dello stato I cookie La funzione setcookie definisce un cookie da inviare insieme alle altre informazioni di header Essi permettono di memorizzare dei dati o informazioni addizionali tramite il browser dell utente poihc fanno parte degli header del protocollo HTTP tale funzione deve essere la prima in assoluto ad essere inviata prima di qualsiasi contenuto della pagina HTML La funzione ha questa sintassi int setcookie string name string value int expire string path string domain int secure come si pu notare tutti gli argomenti sono opzionali tranne name e con i seguenti significati name nome del cookie da creare value il valore da attribuirgli expire data di scadenza che il browser provveder a cancellare path percorso della pagina che deve restituirlo domain dominio per cui esso valido secure indica se esso deve essere trasmesso solo in una connesisone sicura di tipo HTTPS conseguente che i cookie diventino disponibili solo dopo la pagina successiva a quella che li ha generati al refreshing della medesima e possono essere cancellati solo con gli stessi parametri che gli ha generati PHP stata utilizzata la funzione time 3600 secondi 1 ora if scelta impostacookie imposta il cookie SetCookie fms valore time 3600 echo per attivare il cookie ricaricare la pagina clicca qui exit else if scelta rimuovicookie cancella il cookie setcookie fms time 1 echo per disattivare il cookie ricaricare la pagina clicca qui exit cookie Controlla se il cookie e stato trasmesso dal browser e precisamente il nome utilizzato fms if isset fms echo Cookie non impostato else bisogna chiedere il nome del cookie in questo caso fms per conoscere il valore immesso echo nome valore echo echo fms fms Inserisci il valore da notare la funzione int isset mixed var che verifica se una variabile definita Comunicazione con l utente i form Proprio nel precedente paragrafo sono stati usati i form o moduli per inviare dati Non c nulla di differente rispetto a tutti gli altri metodi di gestione dei form e nemmeno sull uso delle variabili nei confronti di ASP e JSP quando si inviano variabili tramite form queste sono considerate dalla pagina ricevente delle varibili globali Il metodo GET usato in un form equivale al passaggio dei parametri via URL cio la pagina richiamata con tutte le variabili e i parametri sono visualizzati nella barra degli indirizzi salvati nella cache e o potrebbero esseri salvati nella cartella cronologia cosa che non per nulla consigliato pensate ad esempio che l utente immetta una password o un altro tipo di dato personale In sostanza sempre consigliato usare il metodo POST nei form Di seguito c un form d invio dati form PHP primo form Cognome Nome Tipo di scuola Materna Elementare Media Superiore Materia Insegnata Italiano Matematica Altro poi uno di ricezione ed elaborazione form2 PHP prelievo dati primo form PHP echo lei il sig cognome nome echo n echo la sua scuola d appartenenza tiposcu echo n adesso controlliamo se esiste la variabile materia la checkbox viene valutata l esistenza dell array if isset materia echo materia insegnata echo n viene scandito l array per estrarre il valore scelto con foreach foreach materia as val echo val Attenzione per le versioni dalla 4 1 in poi e anche la 5 x occorre usare uno stile diverso per prelevare le informazioni tra le pagine web Gli esempi che seguono si commentano da s Uso del metodo GET pagina chiamante metodo GET Prova d invio informazioni Elabora dati pagina ricevente metodo GET PHP echo Prova ricezione informazioni echo Sono stati inviati i seguenti dati echo Primo dato GET strCognome echo Secondo dato GET strNome Uso del metodo POST e i form Modulo casella di testo con pagina chiamante e ricevente modulo Immetti il tuo nome file elaboradati1 PHP elaborazione testo PHP strrisultato POST strnome echo hai inserito il testo strrisultato Modulo pulsanti di opzione con pagina chiamante e ricevente modulopulsantiopzione Quale nazione preferisci per le tue vacanze Francia Spagna Inghilterra file elaboradati2 PHP elaborazione testo PHP strrisultato POST opVacanze echo tu preferisci andare in vacanza in strrisultato Modulo casella di controllo con pagina chiamante e ricevente modulocaselladicontrollo Qual il tuo hobby Lo sport I francobolli Il computer file elaboradati3 PHP elaborazione testo PHP if is array POST chkHobby echo I tuoi hobby sono foreach POST chkHobby as value echo value var dump POST chkHobby Modulo casella di riepilogo con pagina chiamante e ricevente modulocaselladiriepilogo Scegli il tuo libro preferito e la poesia preferita I Promessi Sposi Orlando Furioso La Divina Commedia La cavallina storna La pioggia nel pineto Il porto sepolto L isola La capra file elaboradati4 PHP elaborazione testo PHP if is array POST cbLibro echo hai scelto il libro foreach POST cbLibro as value echo value if is array POST lstPoesia echo hai scelto la poesia foreach POST lstPoesia as value echo value var dump POST cbLibro echo var dump POST lstPoesia PHP parte quinta testo Francesco Mannarino mailto fm docenti org Installazione in ambiente Linux Tutte le attuali distribuzioni includono il supporto PHP quella che adopero attualmente RedHat 7 2 stabile ed efficiente Ma vi capiter sicuramente di dover aggiornare il vostro server Linux di conseguenza necessario configurarlo manualmente dopo aver scaricato i file opportuni dal sito della GTK http gtk PHP net da quello Zend oppure da quello ufficiale PHP http www PHP net Si possono scegliere le confezioni precompilate RPM che si installano facilmente col comando rpm i
展开阅读全文