Sei sulla pagina 1di 34

PHP

PHP: Hypertext Preprocessor

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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>

Prof. Filippo Lanubile

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.

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

Esempi
// stampa: Ciccio dice: "I'll be back"
echo 'Ciccio dice: "I\'ll be back"';

// stampa: Le variabili si espandono


$var = "espandono";
echo "Le variabili si $var";

Prof. Filippo Lanubile

6
Esempi
<?php
$str = <<<EOD
Esempio di stringa
che occupa piu’ linee
usando la sintassi heredoc.
EOD;
?>

Prof. Filippo Lanubile

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);

echo $arr["foo"]; // stampa bar


echo $arr[12]; // stampa 1
?>

Prof. Filippo Lanubile

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.

Prof. Filippo Lanubile

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“
?>

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

10
Operatori di confronto

Operatore Descrizione
== Uguale
!= Diverso
> Maggiore
< Minore
>= Maggiore o uguale
<= Minore o uguale

Prof. Filippo Lanubile

Operatori logici

Operatore Descrizione
&& and
|| or
! not

Prof. Filippo Lanubile

11
Condizioni
z if-elseif-else

if ($a > $b) {


print "a è maggiore di b";
} elseif ($a == $b) {
print "a è uguale a b";
} else {
print "a è minore di b";
}

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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);

Prof. Filippo Lanubile

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;

Prof. Filippo Lanubile

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 ($arr as $value) {


echo "Valore: $value<br />";
}

Prof. Filippo Lanubile

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

foreach ($arr as $key => $value) {


echo "Chiave:$key; Valore:$value<br />";
}

Prof. Filippo Lanubile

16
Esercizio 3
z Create uno script PHP che usi tutte le
istruzioni di controllo e i cicli.

Prof. Filippo Lanubile

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";
}

Prof. Filippo Lanubile

17
Funzioni: passaggio parametri
z E’ possibile passare una lista degli argomenti
(variabili e/o costanti delimitati dalla virgola).

z Il passaggio può avvenire per:


z Valore (default)
z Riferimento

z Si possono specificare i valori di default degli


argomenti
Prof. Filippo Lanubile

Passaggio per Valore


$arr = array(45, 79);

stampa_array($arr);

function stampa_array($vett){
// $vett è una copia di $arr
echo "$vett[0] + $vett[1]";
}
Prof. Filippo Lanubile

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

Passaggio per Riferimento


function aggiungi_qualcosa(&$string)
{
$string .= 'ed altro';
}

$str = 'Questa è una stringa';


aggiungi_qualcosa($str);

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

function fare_il_caffe ($tipo = "cappuccino") {


return "Sto facendo una tazza di $tipo.\n";
}

echo fare_il_caffe (); // stampa " cappuccino"


echo fare_il_caffe ("espresso");
Prof. Filippo Lanubile

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");
?>

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

22
Form
<body>

<form method="POST" action="esercizio8.php">

User ID: <input type="text" name="uid" />


<br />
Password: <input type="password" name="passwd" />
<br />
<input type="submit" value="Logon" />

</form>

</body>

Prof. Filippo Lanubile

Form
<body>
<p>
Ciao
<?php
echo $_POST["uid"];
?>
La tua password &egrave;:
<?php
echo $_REQUEST["passwd"];
?>
</p>
</body>

Prof. Filippo Lanubile

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>

Prof. Filippo Lanubile

24
Cookie
<html>
<body>
<p>
<?php
if (isset($_COOKIE["uname"]))
echo “Benvenuto " . $_COOKIE["uname"] . "!<br />";
else
echo “Sconosciuto!<br />";
?>
</p>
</body>
</html>

Prof. Filippo Lanubile

Cookie
z Nota: per rimuovere un Cookie, è sufficiente
usare setcookie() specificando come
scadenza una data già scaduta

z Es:
setcookie("uname", "Ciccio", time() - 3600);

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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.

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

Sessione
// script 1: avvia sessione
...
<?php
session_start(); // start session
$_SESSION['nome'] = 'Jesper';
?>
...

Prof. Filippo Lanubile

27
Sessione
// script 2: continua sessione
...
<?php
session_start(); // <--
echo 'Hello '.$_SESSION['nome'];
?>
...

Prof. Filippo Lanubile

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.

Prof. Filippo Lanubile

Esercizio 6
z Create degli script che simulino il logon e
logoff in un’applicazione web mediante
creazione e cancellazione di una sessione.

Prof. Filippo Lanubile

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

z Per le altre funzioni di accesso al filesystem,


consultare:
http://it2.php.net/manual/it/ref.filesystem.php
Prof. Filippo Lanubile

fopen()
z Sintassi:
int fopen(“path/file", "w");

Restituisce un puntatore al file, come in C

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.

Prof. Filippo Lanubile

30
fread()
z Sintassi:
string fread(int fp, int lung)

Restituisce stringa letta dal file, di lunghezza


specificata

Prof. Filippo Lanubile

fwrite()
z Sintassi:
int fwrite(int puntatore, string testo)

Restituisce il numero di caratteri scritti

Prof. Filippo Lanubile

31
fclose()
z Sintassi:
bool fclose(int fp)

Restituisce TRUE in caso di successo,


FALSE in caso di fallimento

Prof. Filippo Lanubile

file()
z Sintassi:
array file (string filename)

Restituisce le linee del file in un array

Prof. Filippo Lanubile

32
Esempio
$fp = fopen("./ciccio.txt", "w");
if(!$fp)
die ("Cannot open the file");

fwrite($fp, 'Hello world!');


fclose($fp);

Prof. Filippo Lanubile

Esempio
$lines = file ("ciccio.txt");

if(!is_array($lines))
die('non è un array');

foreach($lines as $single_line)
echo $single_line;

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

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

Prof. Filippo Lanubile

34

Potrebbero piacerti anche