Introduzione a PHP Gestione dei Dati e della Conoscenza Diego De Cao, Roberto Basili {decao,basili}@info.uniroma2.it a.a. 2008/2009 PHP Overview PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") E’ un linguaggio di scripting generalpurpose Open Source Sintassi semplice (simile al C) Il codice è integrato all’iterno del codice HTML PHP - La Storia Nato nel 1994 ad opera del danese Rasmus Lerdorf, PHP era in origine una raccolta di script CGI che permettevano una facile gestione delle pagine personali Nel 1995 si evolve diventando un linguaggio di scripting embedded in differenti Web Server Attualmente (ormai alla versione 5) è stato arricchito con il supporto alla programmazione Object-Oriented e con numerose librerie (tra cui il supporto per MySQL) Popolarità Fonte: http://php.net/usage.php Perché è usato??? Perché è fondamentalmente cross-platform Web Server: Apache, Microsoft IIS, Caudium, Netscape Enterprise Server Sistemi Operativi: UNIX (HP-UX, OpenBSD, Solaris, Linux), Mac OSX, Windows NT/98/2000/XP/2003 Database supportati: Adabas D, dBase, Empress, FilePro (read-only), Hyperwave, IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, Direct MS-SQL, MySQL, ODBC, Oracle (OCI7 and OCI8), Ovrimos, PostgreSQL, SQLite, Solid, Sybase, Velocis,Unix dbm Primi Passi … Definizione dei Tag: apertura <?, <?php chiusura ?> <html> <head> <title>Esempio</title> </head> <body> <?php echo "Ciao, sono uno script PHP!";?> </body> </html> Ciao, sono uno script PHP! Tipi di dato e Variabili I tipi di dato supportati da PHP si distinguono in: • tipi scalari: • • • • tipi compositi: • • numeri (interi e a virgola mobile) stringhe booleani array oggetti Le variabili non necessitano della definizione del tipo di dato Vengono dichiarate e utilizzate tramite l’uso del carattere $ seguito da almeno un carattere alfabetico (e.g. $miavariabile) Una eccezione si ha per alcune variabili interne che dopo il $ hanno presentano il carattere _ (e.g. $_SERVER) Array In php gli array possono funzionare in due modi: Scalare: gli indici sono numeri che partono da 0 Associativo: gli indici sono rappresentati da delle stringhe e.g. $myarr[0] = “valore” $myarr[‘indice’] = “valore” Supporto per i FORM Usa due variabili per accedere alle informazioni passate da FORM HTML: $_GET[‘variabile’] e $_POST[‘variabile’] <FORM action=”benvenuto.php" method="post"> <INPUT type="TEXT" name="utente"> <INPUT type="SUBMIT" name="Invia" value=”Vai"> </FORM> <?php if (isset($_POST[‘utente’])) { echo "Benvenuto <b>$_POST[‘utente’]!!!!</b>"; } else { echo “Non conosco il tuo nome!"; } ?> Gestione dello Stato: le Sessioni PHP risolve il problema del mantenimento dello stato attraverso l’uso delle sessioni. Viene utilizzato un cookie in cui viene scritto l’identificativo della sessione. Qualora l’utente abbia disabilitato il cookie è possibile appendere in coda alle richieste GET o POST l’id di sessione. La sessione si avvia tramite la funzione session_start() e informazioni possono essere lette e scritte nella variabile $_SESSION[] <?php session_start(); if (!$_SESSION[‘count’]) $_SESSION[‘count’] = 0; if ($_GET[‘count’] == "yes") $_SESSION[‘count’] = $_SESSION[‘count’] + 1; echo "<h1>".$_SESSION[‘count’]."</h1>"; ?> <a href="session.php?count=yes">Click here to count</a> Gestione dello Stato: le Sessioni (2) Le variabili di sessione possono essere annullate attraverso la funzione session_unset(). La funzione session_destroy() distrugge tutte le informazioni della sessione. La funzione session_unregister(nome_variabile) invece permette di cancellare una singola variabile impostata nella sessione. Inclusioni e Funzioni PHP permette l’inclusione di file, in cui possono essere definite funzioni oppure del codice da eseguire <? include(‘nomefile.php’) ?> Una funzione può essere definita usando la seguente sintassi: <?php function foo($arg_1, $arg_2, /* ..., */ $arg_n) { echo "Funzione di esempio.\n"; return $retval; } ?> PHP e MySQL Le librerie di accesso a MySQL sono integrate in PHP Ci sono due tipi di risorsa usati nel modulo MySQL. Il primo è l'identificativo di connessione per una connessione ad un database, del secondo tipo sono le risorse che contengono i risultati di una query. Connessione al DB: /* Connessione e selezione del database */ $connessione = mysql_connect("host_mysql", "utente_mysql", "password_mysql”); mysql_select_db("mio_database”); Esecuzione di query In PHP esiste una sola funzione che esegue una query sul DB, indipendentemente se sia di ricerca o di inserimento; /* Esecuzione di una query SQL di Inserimento */ $query = ”INSERT INTO tabella(colonna) VALUES (valore)"; $risultato = mysql_query($query); /* Esecuzione di una query SQL di Ricerca */ $query = "SELECT * FROM mia_tabella"; $risultato = mysql_query($query); Recupero dei Risultati I record recuperati da una query vengono inseriti in un array che può essere sia di tipo associativo che numerico; /* Stampa dei risultati in HTML */ echo ”<table>\n"; $linea = mysql_fetch_array($risultato, MYSQL_ASSOC); echo "\t<tr>\n"; foreach ($linea as $nome_colonna => $valore_colonna) { echo "\t\t<td>$nome_colonna</td>\n"; } echo "\t</tr>\n"; do { echo "\t<tr>\n"; foreach ($linea as $valore_colonna) { echo "\t\t<td>$valore_colonna</td>\n"; } echo "\t</tr>\n"; } while ($linea = mysql_fetch_array($risultato, MYSQL_ASSOC)); print "</table>\n”; Gestione delle eccezioni In caso di errore si possono gestire le eccezioni interrompendo l’esecuzione dello script e mostrando un messaggio di errore a piacere. Questo avviene tramite l’uso della funzione die() e il tipo di errore si ottiene tramite la funzione mysql_error() $connessione = mysql_connect("host_mysql", "utente_mysql", “password_mysql") or die("Connessione non riuscita: " . mysql_error()); Funzioni di utilità Codifica dei caratteri addslashes(stringa): aggiunge il carattere \ davanti agli apici. stripslashes(stringa): rimuove il carattere \ davanti agli apici. urlencode(stringa): esegue la codifica dei caratteri che non possono essere scritti direttamente in una URL con simbolo % seguito da due caratteri esadecimali. urldecode(stringa): esegue la decodifica della stringa codificata attraverso urlencode. Riferimenti Manuale PHP http://www.php.net/docs.php WAMP (Apache, PHP, MySQL on Windows): un sistema integrato e già preconfigurato per usare Apache, PHP e MySql sotto Windows. http://www.wampserver.com/en/download.php EasyPHP(Apache, PHP, MySQL on Windows): un sistema integrato e già preconfigurato per usare Apache, PHP e MySql sotto Windows http://www.easyphp.org/