Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Indice
z Introduzione z Funzioni
z Sintassi Fondamentale z Form
z Tipi z Cookie
z Variabili z Sessione
z Costanti z File
z Operatori
z Strutture di controllo
1
Introduzione
z PHP è un linguaggio di scripting general-purpose
z Sintassi basata su quella di C, Java e Perl
z Obiettivo principale: permettere agli sviluppatori web
di scrivere velocemente pagine web dinamiche
z Integrato nell'HTML
z Semplice da imparare
z E’ Open Source
z Parte di LAMP: Linux-Apache-MySQL-PHP/Perl/Python
z PHP 4 la versione più diffusa
z PHP 5 disponibile dal 2004 con un nuovo modello a oggetti
Prof. Filippo Lanubile
Sintassi
z Un file PHP contiene tag HTML e del codice PHP di
scripting.
z Esempio di un semplice script PHP che invia il testo
"Hello World" al browser:
<html>
<body>
<?php echo "Hello World"; ?>
</body>
</html>
2
Sintassi
z Un blocco PHP è racchiuso tra <?php e ?> e
può essere inserito ovunque nel documento.
z Ciascuna linea di codice PHP termina con
un punto e virgola
z Le due istruzioni fondamentali per l’output di
testo in PHP sono echo e print.
Commenti
z In PHP, si usa // per fare un commento su
singola linea
z /* e */ per commentare un blocco di linee.
<?php
// Questo e’ una linea di commento
/* Questo e’ un
blocco di commento */
?>
Prof. Filippo Lanubile
3
Variabili
z Tutte le variabili in PHP iniziano con un
simbolo di dollaro ($).
z Possono contenere stringhe, numeri o array.
<?php
$txt = "Hello World";
echo $txt;
unset($txt); // dealloca
// distrugge più di una variabile
unset($foo1, $foo2, $foo3);
?> Prof. Filippo Lanubile
Tipi
z PHP 4 supporta 8 tipi primitivi + NULL
z 4 tipi scalari:
z boolean
z integer
z float
z string
z 2 tipi composti:
z array
z object
4
Conversione
z Type juggling
z PHP non richiede la definizione esplicita del tipo in una
dichiarazione di variabile, il cui tipo è determinato dal
contesto
z Conversione esplicita tramite cast
<?php
$foo = TRUE; // $foo è boolean
$foo = "0"; // $foo è string
$foo += 2; // $foo è integer (2)
$foo = $foo + 1.3; // $foo è float (3.3)
$bar = (integer) $foo; // $bar è integer (3)
Prof. Filippo Lanubile
?>
Esercizio 1
z Scrivete uno script PHP che dichiari variabili
di tipo scalare
z Lo script deve generare una pagina HTML a
piacere con le informazioni sul nome e valore
delle variabili
z Testate anche il cast esplicito
5
String
z Una stringa può essere specificata in 3
diversi modi.
z single quoted
z si specifica tra apici singolo '...'
z double quoted
z si specifica tra doppi apici "..."
z heredoc syntax
z si specifica tra un identificatore da definire
Esempi
// stampa: Ciccio dice: "I'll be back"
echo 'Ciccio dice: "I\'ll be back"';
6
Esempi
<?php
$str = <<<EOD
Esempio di stringa
che occupa piu’ linee
usando la sintassi heredoc.
EOD;
?>
Concatenazione
z Per concatenare due o più variabili, si usa
l’operatore punto (.):
<?php
$txt1 = "Hello World";
$txt2 = "1234";
echo $txt1 . " " . $txt2 ;
?>
Prof. Filippo Lanubile
7
Array
z Un array può essere creato dalla funzione array()
z Sintassi: array( [key =>] value )
key è di tipo integer o string
value è di qualsiasi tipo
<?php
$arr = array("foo" => "bar", 12 => true);
Costanti
z È convenzione comune che i nomi di costante siano
sempre maiuscoli.
z Le costanti possono contenere solo dati di tipo
boolean, integer, float e string.
z Non è necessario anteporre il simbolo $ al nome
z Le costanti possono essere definite e utilizzate
ovunque senza seguire le regole di visibilità.
z Una volta impostate, le costanti non posso essere
ridefinite, né annullate.
8
Costanti
z Le costanti possono essere definite solo con
la funzione define() e non tramite
assegnazione
<?php
define("COSTANTE", "Ciao mondo.");
echo COSTANTE; // stampa "Ciao mondo."
echo Costante; // stampa "Costante“
?>
Esercizio 2
z Scrivete uno script PHP che generi una
pagina HTML
z Dovete usare i 3 diversi tipi di stringhe nel
codice
z Dovete concatenare tra loro 2 o più stringhe
z Usate gli array
z Definite e usate 2 o più costanti
9
Visibilità
<?php
$a = 1; /* global scope */
$b = 2;
function pippo() {
global $a; // accede ad a globale
$c = 3 + $a; /* local scope */
$c += $GLOBALS["b"]; // accede ad b
}
?>
Prof. Filippo Lanubile
Operatori Aritmetici
Operator Descrizione
+ Addizione
- Sottrazione
* Moltiplicazione
/ Divisione
% Modulo (resto divisione)
++ Incremento
-- Decremento
10
Operatori di confronto
Operatore Descrizione
== Uguale
!= Diverso
> Maggiore
< Minore
>= Maggiore o uguale
<= Minore o uguale
Operatori logici
Operatore Descrizione
&& and
|| or
! not
11
Condizioni
z if-elseif-else
Condizioni
z switch
switch (expr) {
case label1:
code to execute; // expr == label1
break;
case label2:
code to execute; // expr == label2
break;
default:
code to execute; // expr != label1&label2;
}
Prof. Filippo Lanubile
12
Esempio
<?php
switch ($x) {
case 1:
echo "Number 1";
break;
case 2:
echo "Number 2";
break;
default:
echo "No number between 1 and 2";
}
?>
Prof. Filippo Lanubile
Cicli
z Le istruzioni di ciclo in PHP 4:
z while – cicla attraverso un blocco di codice finché
la condizione specificata è vera
z do...while – cicla attraverso un blocco di codice
almeno una volta e continua finché la condizione
specificata è vera
z for – cicla attraverso un blocco di codice per uno
specificato numero di volte
z foreach – cicla attraverso un array
13
while
z Si comporta come la sua controparte nel
linguaggio C.
$i = 1;
while ($i <= 10) {
print $i++; /* Il valore visualizzato è
il valore della
variabile $i prima
del post-incremento */
}
Prof. Filippo Lanubile
do…while
z Il ciclo do…while è simile al ciclo while, con
l'unica differenza che il blocco di istruzioni è
eseguito almeno una volta.
$i = 0;
do {
print $i;
} while ($i>0);
14
for
z Si comporta come la sua controparte nel
linguaggio C.
/* esempio 1 */
for ($i = 1; $i <= 10; $i++) {
print $i;
}
/* esempio 2 */
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
Prof. Filippo Lanubile
foreach
z Fornisce una facile metodo per attraversare
un array.
z Esistono due possibili notazioni sintattiche; la
seconda è un'utile estensione della prima:
1) foreach(array_expression as $value)
istruzione;
2) foreach(array_expression as $key => $val)
istruzione;
15
foreach 1)
z Attraversa l'array dato da array_expression.
z Ad ogni ciclo, si assegna il valore dell'elemento
corrente a $value e il puntatore interno avanza di
una posizione
foreach 2)
z Esegue lo stesso ciclo con la differenza che il
valore dell'indice corrente viene assegnato ad
ogni ciclo, alla variabile $key.
z Nota: $arr[$key] == $value
16
Esercizio 3
z Create uno script PHP che usi tutte le
istruzioni di controllo e i cicli.
Funzioni
z PHP non supporta l'overloading di funzioni,
non è possibile ridefinire funzioni
precedentemente dichiarate.
z Una funzione può essere definita usando la
seguente sintassi:
function foo (param1, param2,… , paramN) {
echo "Funzione di esempio.\n";
}
17
Funzioni: passaggio parametri
z E’ possibile passare una lista degli argomenti
(variabili e/o costanti delimitati dalla virgola).
18
Passaggio per Riferimento
z Il passaggio per riferimento consente a una
funzione di modificare i valori dei parametri.
z Il parametro passato per riferimento non è più
una copia dell’originale (come nel passaggio
per valore).
z Perché un argomento sia passato sempre
per riferimento a una funzione, occorre
anteporre & al nome dell'argomento nella
definizione della funzione.
Prof. Filippo Lanubile
echo $str;
// stampa 'Questa è una stringa e altro'
Prof. Filippo Lanubile
19
Valori predefiniti degli
argomenti
z Una funzione può definire valori predefiniti per
argomenti scalari
z I valori predefiniti DEVONO essere delle costanti
z I valori predefiniti DEVONO essere dichiarati dopo
tutti i (a destra dei) parametri senza valori predefiniti
Valori restituiti
z Sono restituiti usando l'istruzione opzionale
return.
z Può essere restituito qualsiasi tipo
function numeri_piccoli() {
return array (0, 1, 2);
}
list ($zero, $uno, $due) = numeri_piccoli();
function &restituisce_riferimento(){
return $un_riferimento;
}
Prof. Filippo Lanubile
$nuovo_riferimento =& restituisce_riferimento();
20
Inclusione di File
z E’ possibile includere le funzioni comuni in
file esterni (librerie)
z I file si “caricano” con include() o
require()
<?php
include("Calculator.inc");
require(“lib.php");
?>
Esercizio 4
z Scrivete alcune funzione in file e richiamatele
da uno script esterno
z Almeno una funzione deve specificare il
valore di default dei parametri e un’altra deve
usare il passaggio per riferimento
21
Variabili Predefinite
z $GLOBALS: array variabili globali
z $_COOKIE: array di var caricate con Cookie
z $_GET: “ “ “ con HTTP GET
z $_POST: “ “ “ con HTTP POST
z $_REQUEST: “ “ “ con GET e POST
Form
z Qualsiasi elemento di un form HTML è
automaticamente disponibile per script PHP
z Ci sono più modi di accedere a questa
informazione
z I due modi più semplici per accedere sono i
seguenti
22
Form
<body>
</form>
</body>
Form
<body>
<p>
Ciao
<?php
echo $_POST["uid"];
?>
La tua password è:
<?php
echo $_REQUEST["passwd"];
?>
</p>
</body>
23
Cookie
z Sono un meccanismo per memorizzare dati
in remoto
z Possono essere impostati tramite la funzione
setcookie()
z La funzione setcookie() deve apparire
PRIMA del tag <html>
z Sintassi:
setcookie(nome, valore, scadenza);
Prof. Filippo Lanubile
Cookie
<?php
// setta cookie valido per 1 ora
setcookie("uname", “Ciccio", time() + 3600);
?>
<html>
<body>
<p>
Cookie settato sul server.<br />
Clicca <a href="esercizio7.php">qui</a>
</p>
</body>
</html>
24
Cookie
<html>
<body>
<p>
<?php
if (isset($_COOKIE["uname"]))
echo “Benvenuto " . $_COOKIE["uname"] . "!<br />";
else
echo “Sconosciuto!<br />";
?>
</p>
</body>
</html>
Cookie
z Nota: per rimuovere un Cookie, è sufficiente
usare setcookie() specificando come
scadenza una data già scaduta
z Es:
setcookie("uname", "Ciccio", time() - 3600);
25
Esercizio 5
z Esercizio con form HTML che chiama uno
script PHP passandogli delle variabili.
z Salvate almeno una di queste variabili in un
cookie
z Chiamate un terzo script che cancella il
suddetto cookie
Sessione
z HTTP è un protocollo senza stato
z Per mantenere la sessione è possibile usare
le funzioni di mantenimento della Sessione di
PHP
z La sessione permette di mantenere il valore
delle variabili anche quando i Cookie sono
disabilitati.
26
Sessione
z Quando si inizia una sessione all’utente è assegnato un ID di
sessione univoco.
z Se il client utente accetta i cookie, l’ID di sessione è salvato in un
cookie, il cui nome è prestabilito
z Altrimenti, l’ID di sessione è propagato tra gli script attraverso la
query string o input form.
z Note:
z In una sessione, tutte le variabili di sessione di un utente sono
salvate in un file server side,
z Questo file è associato all’utente mediante l’ID di sessione
z Le variabili di sessione non sono salvate in cookie, né sono
propagate attraverso la query string o input form
Sessione
// script 1: avvia sessione
...
<?php
session_start(); // start session
$_SESSION['nome'] = 'Jesper';
?>
...
27
Sessione
// script 2: continua sessione
...
<?php
session_start(); // <--
echo 'Hello '.$_SESSION['nome'];
?>
...
Sessione
// script 3: distrugge sessione
...
<?php
session_start(); // <--
unset($_SESSION['nome']);
// oppure session_unset();
session_destroy();
?>
...
Prof. Filippo Lanubile
28
Sessione
z Ricordate
z Le variabili di sessione non sono cookie
z La sessione consente di associare a un utente un
file sul server side che contenga le sue variabili
persistenti.
z E’ possibile distruggere le sessioni utente e tutte
le variabili associate
z Dovete sempre usare session_start() negli
script per abilitare l’array $_SESSION. Essa non
solo avvia, ma continua la sessione corrente.
Esercizio 6
z Create degli script che simulino il logon e
logoff in un’applicazione web mediante
creazione e cancellazione di una sessione.
29
File
z fopen – apre / crea nuovo file
z fread – legge da un file
z fwrite – scrive in un file
z fclose – chiude l’accesso a un file
z file – legge il contenuto di un file in un array
fopen()
z Sintassi:
int fopen(“path/file", "w");
z Modo:
z 'r' - Apre in sola lettura; posiziona il puntatore all'inizio del file.
z 'r+' - Apre in lettura e scrittura; posiziona il puntatore all'inizio del file.
z 'w' - Apre il file in sola scrittura; posiziona il puntatore all'inizio del file e
tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo.
z 'w+' - Apre in lettura e scrittura; posiziona il puntatore all'inizio del file e
tronca il file alla lunghezza zero. Se il file non esiste, tenta di crearlo.
z 'a' - Apre in sola scrittura; posiziona il puntatore alla fine del file. Se il file non
esiste, tenta di crearlo.
z 'a+' - Apre in lettura e scrittura; posiziona il puntatore alla fine del file. Se il
file non esiste, tenta di crearlo.
30
fread()
z Sintassi:
string fread(int fp, int lung)
fwrite()
z Sintassi:
int fwrite(int puntatore, string testo)
31
fclose()
z Sintassi:
bool fclose(int fp)
file()
z Sintassi:
array file (string filename)
32
Esempio
$fp = fopen("./ciccio.txt", "w");
if(!$fp)
die ("Cannot open the file");
Esempio
$lines = file ("ciccio.txt");
if(!is_array($lines))
die('non è un array');
foreach($lines as $single_line)
echo $single_line;
33
Esercizio 7
z Realizzate uno script PHP che:
z crea e scrive in un file
z riapre e appende testo al file suddetto
z legge il contenuto di un file e lo mostra nel
browser
z Provate a realizzare uno script che visualizzi
nel browser il contenuto (file e sottocartelle)
di una directory
Riferimenti
z http://www.w3schools.com
z http://www.php.net/
z http://www.php.net/docs.php
z http://it2.php.net/manual/it/index.php
34