+ All Categories
Home > Documents > PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW...

PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW...

Date post: 25-Sep-2020
Category:
Upload: others
View: 17 times
Download: 0 times
Share this document with a friend
42
TW PHP - PHP: Hypertext Preprocessor Nicola Gessa
Transcript
Page 1: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWPHP - PHP: Hypertext Preprocessor

Nicola Gessa

Page 2: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

IntroduzionenPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è unlinguaggio di scripting general-purpose Open Source moltoutilizzato, specialmente indicato per lo sviluppo Web.

nPHP nasce nel 1994 per opera di Rasmus Lerdorf che lo utilizzavanell’implementazione delle proprie pagine web. Nel 1995 esce laprima versione.

nNelle pagine PHP il codice PHP viene immerso nell’HTML. Ilcodice PHP è delimitato da speciali start e end tag che ne indicanol'inizio e la fine e che consentono di passare dal modo HTML almodo PHP.

nPHP può essere usato su tutti i principali sistemi operativi, inclusiLinux, molte varianti di Unix (compresi HP-UX, Solaris eOpenBSD), Microsoft Windows, MacOS X ed è supportato dallamaggior parte dei web server esistenti, quindi anche da Apache eIIS.

Page 3: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Installazione

PHP può essere utilizzato in tre ambiti differenti:

nServer-side scripting: in questo caso si può adottare un moduloper l’estensione del web server (es. file .dll) oppure se non sidispone del modulo si può utilizzare PHP come motore CGI ( equindi si deve disporre dell’eseguibile php.exe)

nCommand line scripting: si installa e utilizza l’interprete php.exeper l’eseguzione da linea di comando.

nApplicazioni GUI. Consente di gestire finestre e oggetti graficiutilizzando l’estensione PHP-GTK che non è fornita con ladistribuzione ufficiale di PHP.

Page 4: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Installazione di PHP per IIS

Per installare un modulo ISAPI per IIS:

nNella console di configurazione di IIS, andare in 'Home Directory’.

nPremere il pulsante ‘Configuration’.

nAggiungere una nuova voce alle Application Mapping.

nSpecificare il path del modulo ‘php4isapi.dll’.

nSpecificare l’estensione dei file da interpretare come .php.

nMarcare la checkbox “Script engine” per informare che si tratta diun engine per script.

nFermare e riavviare IIS.

Page 5: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Installazione di PHP per IIS

La finestra di configurazione per le Applicazioni in IIS.

Page 6: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

File di configurazionenLa configurazione di PHP è registrata nel file php.ini.

nIl file php.ini contiene una lista di direttive.

nNel file php.ini la sintassi da seguire è questa:

u Righe bianche o che iniziano con ; sono ignorate.

u Gli header di sezione (es :[Foo]) sono ignorati.

u Le direttive vanno specificate nella forma: direttiva=valore. Inomi delle direttive sono case sensitive. Il valore può essereun numero, una stringa o una costante

u Le estensioni a PHP devono essere specificate prima del lorosuccessivo uso nel file di configurazione.

nSe usato come linguaggio di script il file php.ini viene letto prima diogni esecuzione di PHP. Se invece PHP è utilizzato da un webserver come interprete del codice delle pagine web, il file è letto solouna volta all’avvio del server.

Page 7: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Un esempio con PHP<html> <head> <title>Test PHP</title> </head> <body> <?php echo "Hello World!"; ?> </body></html>

nIl file non necessita di essere eseguibile. Questi file hannol’estensione .php.

nTutto ciò che fa è visualizzare ‘Hello World!’ usando la funzioneecho di PHP inserita fra gli speciali tag <?php e ?>

nAll'interno di un file HTML si può entrare ed uscire dalla modalitàPHP quante volte si desidera.

Page 8: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Uscire dalla modalità HTMLnEsistono 4 set di tag che possono essere utilizzati per delimitareblocchi di codice PHP:1. <?php echo("per inserire codice php si puousare questo modo\n"); ?>2. <?= espressione ?>Questa è un'abbreviazione per "<? echo espressione ?>" .3. <script language="php"> echo ("altro modo per inserire codice

php"); </script>4. Tag nello stile ASP:<%= $variable; %> Una abbreviazione per "<%echo .."%>

nSoltanto due di questi (<?php. . .?> e <script language="php">. ..</script>) sono sempre disponibili. Gli altri possono essere attivatio disattivati tramite il file di configurazione php.ini.

Page 9: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Uscire dalla modalità HTML

Il PHP permette l’uso delle strutture seguenti, dove l’output econdizionato dal valore di $expression:<?phpif ($expression) { ?> <strong>Questa è vera.</strong>

<?php} else { ?> <strong>Questa è falsa.</strong>

<?php}?>

Page 10: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

CommentiIl PHP supporta i commenti dei linguaggi 'C', 'C++' e della shellUnix. Per esempio:

<?php //Commento su una linea nella stile c++

/* Commento su più linee ...ancora un'altra linea di commento */?>

Lo stile di commento su "una linea", attualmente commenta solofino alla fine della linea o del blocco corrente di codice PHP. Questosignifica che il codice HTML posizionato dopo // ?> saràvisualizzato

Page 11: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Tipi in PHP

PHP supporta 8 tipi primitivi.

4 tipi scalari :

• boolean

• integer

• float

• string

2 tipi composti:

• array

• object

2 tipi speciali:

• resource

• NULL

Page 12: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Tipi in PHPnIl tipo di una variabile di solito non viene impostato dalprogrammatore ma deciso a runtime da PHP in base al contesto nelquale la variabile è utilizzata.

nPer controllare quale sia il tipo e i valori di una certa variabile si usala funzione var_dump().

nSe si vuole una rappresentazione in stringa human-readable deltipo si usa la funzione gettype(). Per farne delle verifiche si puòutilizzate la funzione is_type().

nIl PHP consente il type casting per modificare il tipo di unavariabile.

Page 13: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Esempio sull’uso delle variabili

<?php$foo = "0"; // $foo è stringa (ASCII 48)$foo += 2; // $foo è un intero (2)$foo = $foo + 1.3; // $foo è un float (3.3)$foo = 5 + "10 mele"; // $foo = 15echo $foo."\n"; // stampa 15

//Es. sul casting

$foo = 10; // $foo è un intero

$bar = (boolean) $foo; // $bar è un boolean

echo $bar."\n"; // stampa 1?>

Page 14: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Esempio di tipi di PHP<?php$bool = TRUE; // boolean$str = "foo"; // string$int = 12; // integer

echo gettype($bool); // stampa "boolean"echo gettype($str); // stampa "string"

// se è un intero , lo incrementa di 4if (is_int($int)) { $int += 4;}

// Se $bool è una string, lo stampa// (in questo caso non viene stampato niente)if (is_string($bool)) { echo "String: $bool";}?>

Page 15: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Esempio var_dump()<?php $a = array (1, 2, array ("a", "b", "c"));

var_dump ($a); ?>

/* output:

array(3) {

[0]=> int(1)

[1]=> int(2)

[2]=> array(3) {

[0]=> string(1) "a"

[1]=> string(1) "b"

[2]=> string(1) "c"

}

} */

Page 16: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Stringhe in PHPnLe stringhe in PHP non pongono limiti nella lunghezza.

nSi possono definire usando l’apice singolo. In questo caso lastringa non è mai interpretata.echo ’questa è una semplice stringa';

nSi possono definire usando le doppie virgolette. In questo casoPHP interpreta le variabili e i caratteri di escape contenuti nellastringa.echo “stampo la variabile \$var: $var”;

nSi possono definire usando l’operatore <<<

Es:$str = <<<EOD

Esempio di stringa definita usando la sintassiheredoc.

EOD;

Anche in questo caso la stringa è interpretata.

Page 17: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Stringhe in PHP

nOperatori di stringa:

u l’operatore ‘.’ Concatena due stringhe

u l’operatore ‘.=‘appende ad una variabile la stringa a destradell’uguale.

u Il confronto tra stringhe si esegue utilizzando gli operatori ==,!=, <, >, <=, >=

Page 18: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Array in PHPnPHP fornisce array associativi per memorizzare coppie chiave-valore.Non ci sono differenze fra array con indici e array associativi: PHPfornisce un solo tipo di array.

nUn array può essere creato usando il costrutto array:$arr = array("foo" => "bar", 12 => true);echo $arr["foo"]; // barecho $arr[12]; // 1nLa chiave può essere sia un intero che una stringa.nUn elemento di un array può essere di uno qualunque dei tipi PHP$arr = array("somearray" => array(6 => 5, 13 => 9,"a" => 42));

echo $arr["somearray"][6]; // 5

echo $arr["somearray"][13]; // 9

echo $arr["somearray"]["a"]; // 42

Page 19: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Array in PHPnSe la chiave di un nuovo elemento è omessa, viene adottata comenuova chiave il massimo indice intero dell’array +1. Questo valeanche per gli indici negativi.

nSe non esiste un indice intero, la nuova chiave avrà valore 0.

nSe viene specificata una chiave già esistente il vecchio valore saràsovrascritto.

nNon si possono usare array o oggetti come chiavi.

nUna volta creato l’array può essere modificato.

$arr = array(5 => 1, 12 => 2);

$arr[] = 56; // Come fare $arr[13] = 56;

$arr["x"] = 42; // Aggiunge un nuovo elemento

unset($arr[5]); // Rimuove l’elemento dall’array

unset($arr); // Cancella tutti gli elementi

Page 20: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Strutture di controllo - 1nCostrutto if.. elseif ($a > $b) { print "a è maggiore di b";} else { print "a NON è maggiore di b";}

nelseif estende if aggiungendo la possibilità di eseguire un'altraistruzione nel caso in cui l'espressione contenuta nel ramo if sia FALSEif ($a > $b) { print "a è maggiore di b";} elseif ($a == $b) { print "a è uguale a b";} else { print "a è minore di b";}

Page 21: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Strutture di controllo - 2

n Costrutto while$i = 1;

while ($i <= 10) {

print $i++;

}

n Costrutto do..while$i = 0;do { print $i;} while ($i>0);

n Costrutto forfor ($i = 1; $i <= 10; $i++) { print $i; }

Page 22: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Strutture di controllo - 3n Costrutto for..each$a = array (1, 2, 3, 17);

foreach ($a as $v) {

print "Valore corrente di \$a: $v.\n"; }

n Costrutto switchswitch ($i) {

case 0: print "i è uguale a 0"; break;

case 1: print "i è uguale a 1"; break;

case 2: print "i è uguale a 2"; break; }

n break termina l'esecuzione di una struttura for, foreach, while,do..while o switch.

n continue si utilizza per interrompere l'esecuzione del ciclo correntee continuare con l'esecuzione all'inizio del ciclo successivo

Page 23: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

include() e require()

ninclude() e require() includono e valutano uno specifico file.

ninclude() e require() sono identiche in ogni senso eccetto percome esse trattano gli errori:include() produce un warning mentrerequire() restituisce un Fatal Error.

nQuando un file viene incluso, il codice che esso contiene eredita loscope delle variabili della riga in cui si verifica l'inclusione.

nrequire() e include() devono essere inclusi all'interno di blocchi diistruzioni se si trovano in un blocco condizionale.

nÈ possibile eseguire un'istruzione return() in un file incluso perterminare l'esecuzione di quel file e restituirlo allo script che l'hachiamato.

Page 24: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Funzioni in PHPUna funzione può essere definita usando la sintassifunction myfunc($arg_1, $arg_2, ..., $arg_n){ echo "Funzione di esempio.\n"; return $retval;}

nPHP non supporta l'overloading di funzioni

nPHP 4 supporta un numero variabile di argomenti e gli argomenti didefault

nPHP supporta il passaggio di argomenti per valore e per riferimento(di default, gli argomenti della funzione sono passati per valore)

nIl passaggio per riferimento si ottiene anteponendo un ampersand (&)al nome dell'argomento nella definizione della funzione

nI valori vengono restituiti usando l'istruzione opzionale return.

nPuò essere restituito qualsiasi tipo, incluse liste ed oggetti.

Page 25: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Classi e oggetti

nLe classi sono tipi del linguaggio.

nUna classe si definisce usando la seguente sintassi:<?phpclass Cart{ var $items; // Articoli nel carrello

// lo uso come array associativo

// Aggiunge $num articoli di $artnr nel carrello function add_item ($artnr, $num) { $this->items[$artnr] += $num; }}?>

Page 26: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Classi e oggetti

nPer creare una variabile oggetto si usa l'operatore ‘new’.

$cart = new Cart;

nSi può accedere ai metodi della classe usando l’operatore ‘->’

$cart->add_item(”Mele",10 );

Questa operazione aggiunge all’array associativo items la nuovacoppia (Mele,10).

nPer stampare i valori dell’array si può usare ancora l’operare ->

echo $cart->items["Mele"]; //stampa 10

si specifica un solo simbolo di $ per accedere alla variabili

nPer poter accedere all'interno della classe alle funzioni e allevariabili interne della stessa classe si usa la pseudo-variabile ‘$this’

Page 27: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Classi e oggetti

nE’ possibile generare classi per estensione di altre classi.

nUna classe estesa o derivata ha tutte le variabili e le funzioni dellaclasse di base più tutto ciò che viene aggiunto dall'estensione.

nNon è possibile che una sottoclasse ridefinisca variabili e funzionidi una classe madre.

nL'eredità multipla non è supportata

nLe classi si estendono usando la parola chiave 'extends'.class Named_Cart extends Cart{ var $owner; function set_owner ($name) { $this->owner = $name; }}

Page 28: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Classi e oggetti

nIn PHP si possono definire i costruttori di classe che vengonoinvocati automaticamente quando viene istanziato un oggetto conl’operatore new.class Auto_Cart extends Cart {

function Auto_Cart() {

$this->add_item ("10", 1);

}

}

nL'operatore :: è usato per riferirsi alle funzioni di classi senzaistanziarle. Si possono usare funzioni della classe, ma non levariabili della classe.

Page 29: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Variabili speciali

PHP definisce un certo numero di array associativi specialidisponibili all’interno degli script server-side tra le quali:

n$_SERVER: contiene variabili impostate dal web server e relativeall’ambiente di esecuzione dello script

n$_GET: contiene variabili ricevute dallo script via HTTP GET

n$_POST: contiene variabili ricevute dallo script via HTTP POST

n$_ COOKIE: contiene variabili ricevute dallo script tramite l’invio dicookie

n$_ENV: contiene variabili d’ambiente dello script.

n$_SESSION: contiene variabili che sono correntemente registratenella sessione di esecuzione dello script.

Page 30: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Esempi con le variabili specialiVediamo come verificare che tipo di browser sta utilizzando lapersona che visita le nostre pagine.

Per fare questo si controlla la stringa dell'user agent che il browserinvia come parte della richiesta HTTP. Quest'informazione vieneregistrata in una variabile.

nLa variabile alla quale ci riferiamo adesso è$_SERVER["HTTP_USER_AGENT"]

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

nL'output (risultato) di questo script potrebbe essere:Mozilla/4.0 (compatible; MSIE 5.01; Windows NT5.0)

n$_SERVER è soltanto un array che automaticamente viene resodisponibile da PHP.

Page 31: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Gestire le form

Qualsiasi elemento inviato tramite una form è automaticamentedisponibile negli script PHP.

Es:<form action="action.php" method="POST"> Il tuo Nome: <input type="text" name="name"value="" /> La tua et&agrave;: <input type="text" name="age"value ="" /> <input type="submit"></form>

Quando l'utente riempie questa form e preme il pulsante submit,viene richiamata la pagina action.php.

Page 32: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Gestire le form - 2nNella pagina action.php lo script di gestione della form precedentepotrebbe essere:

Ciao <?php echo $_POST["name"]; ?>.La tua et&agrave; &egrave; di <?php echo$_POST["age"]; ?> anni.

nEcco un possibile output di questo script:Ciao Joe.La tua età è di 22 anni.

nLe variabili $_POST["name"] e $_POST["age"] vengono impostateautomaticamente dal PHP.

nSe usassimo il metodo GET le informazioni ricavate dalla nostraform si troverebbero invece in $_GET.

Page 33: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Gestione delle sessioninPHP consente nel mantenere certi dati attraverso accessisuccessivi con l’uso delle sessioni.

nIl sistema di gestione delle sessioni supporta un numero di opzionidi configurazione che possono essere impostate nel file php.ini.

nAl visitatore del sito web viene assegnato un id unico, il cosidettoid di sessione. Questo viene registrato in un cookie sul lato utenteo è propagato tramite l'URL.Quando un visitatore accede al sito,PHP controllerà automaticamente (se session.auto_start è settatoa 1 in php.ini) se uno specifico id di sessione sia stato inviato conla richiesta.

nLe sessioni sono gestite un 2 modi

u Tramite session_register() che registra variabili nellasessione corrente.

u Con $_SESSION. Si può accedere alle variabili di sessionecome a variabili normali in un array.

Page 34: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Gestione delle sessioninRegistrare una variabile con $_SESSION.

//isset verifica se la variabile è definita

if (!isset($_SESSION['count'])) {

$_SESSION['count'] = 0; }

else {

$_SESSION['count']++;

}

nResettare una variabile con $_SESSION.

unset($_SESSION['count']);

nRegistrare una variabile con session_register().

$nome = ”Mario";

session_register(”nome");

Page 35: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Espressioni regolari

nIl PHP fornisce un insieme di funzioni che forniscono l’interfacciaper l’uso di espressioni regolari con una sintassi compatibile conPerl 5.

nIl supporto per le espressioni regolari è ottenuto mediante lalibreria PCRE, che è un software open source, scritto da PhilipHazel, ed il cui copyright è detenuto dalla Università diCambridge, Inghilterra. A partire dalla versione 4.2.0 di PHPqueste funzioni sono abilitate per default.

nLe espressioni regolari devono essere racchiuse tra delimitatori,ad esempio /. Il delimitatore finale può essere seguito da varimodificatori che agiscono sul criterio di riconoscimento.

nLe funzioni per le espressioni regolari consentono anche leoperazioni di sostituzione e split delle stringhe.

Page 36: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Espressioni regolari - funzioni

nLa funzione preg_grep() restituisce un array composto dagli elementidell'array preso in input che soddisfano i criteri impostatinell’espressione regolare specificata.

$array = array("1" => "stringa1", 2 => "stringa2");

$f_array = preg_grep ("/ga1/", $array);

echo $f_array[1]; //stampa stringa1

nLa funzione preg_match() restituisce il numero di volte in cui èavvenuto il riconoscimento della espressione regolare nelle stringa ditesto.if (preg_match ("/php/i", "PHP supporta le e. r.")) {

echo ”Riconoscimento avvenuto."; }// stampa questo

else { echo "Testo non riconosciuto."; }

Page 37: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Esempio

Si vuole creare una pagina PHP che consenta a degli utenti diinserire il proprio nome da aggiungere ad una lista.

Per fare questo si deve:

nPredisporre un database per la registrazione dei dati ricevuti,quindi creare le tabelle con i campi necessari.

nCreare una pagina HTML che consenta agli utenti di inserire i datida registrare.

nCreare la pagina php che ricevuti i dati via web, utilizza le funzionidi accesso al database per la registrazione dei dati.

Page 38: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Predisporre il database

nSi crea il database ListaClienti con Access.

nSi crea la tabella Utente con i campi Nome, Cognome e ID.

nSi crea una sorgente dati ODBC per questo data base

Page 39: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

La pagina php - 1Sia l’invio che la registrazione dei dati vengono fatti nella stessa pagina

<?php$myconn=odbc_connect("ListaClienti","","");$query = <<<EODinsert into UTENTI (Nome,Cognome) values('$_POST[Nome]','$_POST[Cognome]')EOD;

if($_POST["Nome"] <>""){$res=odbc_exec($myconn, $query);

}?><HTML><HEAD></HEAD>

<BODY leftmargin="0" topmargin="0" marginwidth="0"marginheight="0" >

Page 40: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

La pagina php - 2<FORM action=utenti.php method=POST>

<INPUT TYPE="text" name="Nome">

<INPUT TYPE="text" name="Cognome"><INPUT TYPE="submit" name="Invio" value="Invia"><BR>

</FORM><p>Lista degli utenti:<p>

<?php$res=odbc_exec($myconn, "select * from UTENTI");//odbc_result_all($res); //inserisce il risultato in una//tabella html$i=1;while(odbc_fetch_row($res,$i)){

$nome = odbc_result($res, "Nome");$cognome = odbc_result($res, "Cognome");$i++;echo $nome." - ".$cognome."<br>";

}?></BODY></HTML>

Page 41: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Il risultato

Page 42: PHP - PHP: Hypertext Preprocessor TWfabio/corsi/tw02/slides/22b-PHP/PHP.pdf · 2003. 5. 30. · TW Nicola Gessa Introduzione nPHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor")

TWNicola Gessa

Link Utili

nhttp://www.php.net/

nhttp://php.resourceindex.com/

nhttp://www.hotscripts.com/PHP/

nhttp://www.phpworld.com/


Recommended