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/