PHP5
seconda parte - interazione con l’HTML

             Gianfranco Fedele
            Analista programmatore

        g....
PHP5: Parametri HTML

•   Il trasferimento dei dati da una pagina HTML all’altra può avveniere mediante i
    metodi:
    ...
PHP5: Form HTML / 1

•   I form HTML consentono di trasmettere dati ad una pagina PHP. Ciò mediante
    il tag form ed i t...
PHP5: Form HTML / 2


<form action="elabora.php" method="get">
      <h1>Qual’&egrave; il tuo nome?</h1>
      <input type...
PHP5: Variabili superglobali

•   Sono immediatamente accessibili negli script PHP alcune variabili speciali
    dette sup...
PHP5: Cenni sulla sicurezza

•   Esiste nel PHP la direttiva di configurazione register_globals che trasferisce il
    con...
PHP5: Scoping / 1

•   Ambito di visibilità (scope) di una variabile è il contesto in cui è possibile
    accedere al suo ...
PHP5: Scoping / 2



<?
// Dichiarazione della funzione restituisce_totale()
function restituisce_totale() {
   return $to...
PHP5: Output nell’ambito dell’HTML

•   La funzione echo() è la funzione più utilizzata per la generazione dinamica
    de...
PHP5: Escaping

•   Il carattere  viene utilizzato come escape per l’output di caratteri speciali. Ad
    esempio: n signi...
PHP5: Funzioni di uscita


•   Per interrompere l'esecuzione di uno script PHP si possono utilizzare le
    funzioni exit(...
PHP5: Espressioni / 1

•    Espressione booleana:

     $a = FALSE;
     $b = TRUE;
     if ($a and $b) print("a e b sono ...
PHP5: Espressioni / 2


Attenzione:
•   sono equivalenti al valore TRUE:
     –   i numeri, interi o in virgola mobile, di...
PHP5: Flow control / 1

•    Il costrutto if-elseif-else non impone l’utilizzo dei delimitatori di blocco delle
     istru...
PHP5: Flow control / 2

•    Il costrutto switch-case è più compatto ed autoesplicativo del costrutto if-
     elseif-else...
PHP5: Flow control / 3

•    Il costrutto while antepone il confronto alle istruzioni; do-while lo
     postpone determina...
PHP5: Flow control / 4

•     Il costrutto for espone tre espressioni che determinano:

       – Assegnazione del valore i...
PHP5: Cicli sugli elementi di un array

•     Le istruzioni while e foreach rappresentano il modo standard di accedere agl...
PHP5: Funzioni / 1

•     La dichiarazione di funzioni avviene con la parola chiave function e può
      essere dichiarata...
PHP5: Funzioni / 2

•     PHP è tollerante rispetto al numero di parametri passati (in eccesso e in difetto).
•     Le var...
PHP5: Funzioni / 3

•    Per passare ad una funzione un argomento per riferimento, dovete anteporre un
     ampersand (&) ...
PHP5: Upload di file / 1

•   Esiste un metodo standard per effettuare l’upload dei file in PHP5.
•   Se fileutente è il n...
PHP5: Upload di file / 2

<? /* A proposito… ecco un modo sicuro di scrivere i commenti in HTML */ ?>
<form enctype="multi...
PHP5
   seconda parte - FINE

       Gianfranco Fedele
      Analista programmatore

  g.fedele@dinamicadigitale.it
www.li...
Upcoming SlideShare
Loading in …5
×

Gianfrasoft Corso Di Php Parte 2

747 views
699 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
747
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Gianfrasoft Corso Di Php Parte 2

  1. 1. PHP5 seconda parte - interazione con l’HTML Gianfranco Fedele Analista programmatore g.fedele@dinamicadigitale.it www.linkedin.com/in/gianfrasoft
  2. 2. PHP5: Parametri HTML • Il trasferimento dei dati da una pagina HTML all’altra può avveniere mediante i metodi: – GET – POST – Altri metodi previsti dal protocollo HTTP sono caduti in disuso • GET accoda all’URL i valori dei parametri scambiati, separandoli con i caratteri ? e poi & (in XHTML la & è sostituita da &amp;). • POST introduce le informazioni nel corpo della richiesta HTTP non rendendole immediatamente visibili nella barra di indirizzo del browser. In questo modo non sono posti limiti alla dimensione ed al numero dei parametri passati. gianfrasoft.wordpress.com - 2008
  3. 3. PHP5: Form HTML / 1 • I form HTML consentono di trasmettere dati ad una pagina PHP. Ciò mediante il tag form ed i tag che rappresentano componenti di input. • Nei form è indispensabile indicare gli attributi action e method per segnalare rispettivamente la pagina dinamica PHP da interrogare ed il metodo (GET o POST) con cui i dati devono essere trasmessi. • I principali controlli di input HTML sono i seguenti: – text – password – checkbox – radio – hidden – submit – file • I controlli con tag non input HTML possono essere di tipo: – select - option - multiple – textarea gianfrasoft.wordpress.com - 2008
  4. 4. PHP5: Form HTML / 2 <form action="elabora.php" method="get"> <h1>Qual’&egrave; il tuo nome?</h1> <input type="text" name="nome" maxlength="30"/> <input type="hidden" name=“alias" value="nome_segreto"/> <h1>Quali di questi linguaggi conosci?</h1> <select multiple name="linguaggi[ ]" size="3"> <option>PHP</option> $nome = $_GET["nome"]; <option>ASP </option> <option>Java </option> $alias = $_GET["alias"]; <option>C++ </option> $linguaggi = $_REQUEST["linguaggi"]; </select> <input type="submit" value="Invia“ /> <!-- // meglio non usare $_REQUEST notazione XHTML --> $registra = $_GET["registra"]; <input type="check" name="registra" /> $registra = $_GET["registra_ml"]; <input type="check" name="registra_ml" value="rml" /> // Mostro i dati inseriti </form> echo "<h1>Ciao $nome</h1>"; foreach($linguaggi as $k=>$v) echo "<h2>$k - $v</h2>"; echo $registra."<br />"; // notaz. XHTML gianfrasoft.wordpress.com - 2008
  5. 5. PHP5: Variabili superglobali • Sono immediatamente accessibili negli script PHP alcune variabili speciali dette superglobali (da verificare in phpinfo()) – $_REQUEST, $_POST, $_GET (da form HTML) – $_SERVER (sezione Apache Environment) – $_ENV (sezione Environment) – $_SESSION (per la gestione delle sessioni) – $_COOKIE[“nome_cookie"] (per la gestione dei cookies) – $HTTP_POST_FILES [“nome_file"] (per l’upload dei file) <?php // esempio echo $_SERVER["HTTP_HOST"]; ?> gianfrasoft.wordpress.com - 2008
  6. 6. PHP5: Cenni sulla sicurezza • Esiste nel PHP la direttiva di configurazione register_globals che trasferisce il contenuto delle variabili superglobali in variabili semplici. • L’utilizzo di questa funzionalità, come della funzione import_request_variables(), è pericoloso in termini di sicurezza in quanto consente agli hacker di introdurre valori di default, mediante accesso ai parametri HTTP (della GET e della POST), alle variabili presenti nello script PHP. • Per questo stesso motivo è indispensabile sempre: – assegnare un valore di default alle variabili negli script PHP; – caricare i dati acquisiti dal form in variabili semplici e verificare che i valori in esse contenuti rispettino le limitazioni imposte dal sistema: la massima lunghezza in caratteri, il massimo valore numerico consentito, il giusto formato di numero e/o di data, ecc. In ogni caso mai accontentarsi dei controlli client side; – prevenire attacchi di tipo sql injection e code injection verificando il contenuto delle variabili testé descritte, perché non contengano caratteri non consentiti (utilizzare strlen(), is_int(), htmlspecialchars(), addslashes(), ereg() ecc.) gianfrasoft.wordpress.com - 2008
  7. 7. PHP5: Scoping / 1 • Ambito di visibilità (scope) di una variabile è il contesto in cui è possibile accedere al suo contenuto. • In PHP esistono due categorie di variabili: – le variabili globali, dichiarate nella parte dello script esterna a tutte le funzioni ed a tutte le classi. – Le variabili locali sono dichiarate, invece, all'interno di funzioni o classi. • Le variabili globali non sono visibili all'interno di funzioni o classi. E' possibile, comunque, rendere visibili le variabili globali all'interno di funzioni e classi ri- dichiarandole con la parola chiave global. • Le variabili globali sono, altresì, accessibili tramite l'array associativo $GLOBALS. gianfrasoft.wordpress.com - 2008
  8. 8. PHP5: Scoping / 2 <? // Dichiarazione della funzione restituisce_totale() function restituisce_totale() { return $totale; } // Dichiarazione della funzione restituisce_totale2() function restituisce_totale2() { // Cosi' indico che $totale è una variabile globale global $totale; return $totale; } // Una variabile globale $totale = 99; // Questo stampa "è il totale." echo restituisce_totale()." &egrave; il totale."; // Questo stampa "99 è il totale." echo restituisce_totale2()." &egrave; il totale."; ?> gianfrasoft.wordpress.com - 2008
  9. 9. PHP5: Output nell’ambito dell’HTML • La funzione echo() è la funzione più utilizzata per la generazione dinamica dell'output HTML. echo "<h1>Benvenuto su questo sito!</h1>"; • Del tutto analoga al costrutto echo() è la funzione print(). • Le variabili all’interno dei doppi apici vengono interpolate. • Le stringhe fra apici singoli vengono inviate (stampate) inalterate. print "Il valore di a è $a"; print ('Con $a si indica una variabile'); • Infine, un modo stringato di scrivere l’output di PHP nell’ambito della pagina HTML è quello di utilizzare i tag speciali <?= espressione ?>, senza richiamare funzioni di output né terminatore di riga “;”. <?= $variabile + 5 ?> gianfrasoft.wordpress.com - 2008
  10. 10. PHP5: Escaping • Il carattere viene utilizzato come escape per l’output di caratteri speciali. Ad esempio: n significa newline (a capo). Attenzione al fatto che l’output generato nell’ambito delle pagine HTML non tiene conto del carattere newline come del carattere space (se ripetuto); per andare a capo utilizzare il tag <BR />, per lo spazio &nbsp;. <?php Output HTML: $nome = “Gianfranco Federe"; $titolo = "Corso di PHP"; Autore: Gianfranco Fedele /* stampa */ Titolo: Corso di PHP echo "Autore: $nome<BR />n"; echo "Titolo:nn $titolo<BR />nn"; ?> gianfrasoft.wordpress.com - 2008
  11. 11. PHP5: Funzioni di uscita • Per interrompere l'esecuzione di uno script PHP si possono utilizzare le funzioni exit() e die(). • die() accetta come parametro un messaggio che verrà riportato nella pagina HTML prima di uscire. if ($i == 0) { // errore... die(“Il valore del denominatore &egrave; zero. Impossibile procedere.”); } $j = 10 / $i; gianfrasoft.wordpress.com - 2008
  12. 12. PHP5: Espressioni / 1 • Espressione booleana: $a = FALSE; $b = TRUE; if ($a and $b) print("a e b sono vere"); • Espressione di confronto: $a = " 04"; $b = "0003"; if ($a > $b) print("a è maggiore di b"); if (strcmp($a, $b)) print("a è più grande di b"); • Espressione condizionale: // Un numero e' pari se, diviso per due, non da' resto echo "n è ".( $n % 2 == O ? "pari" : "dispari" ); gianfrasoft.wordpress.com - 2008
  13. 13. PHP5: Espressioni / 2 Attenzione: • sono equivalenti al valore TRUE: – i numeri, interi o in virgola mobile, diversi da zero (compresi i negativi); – le stringhe non vuote; – gli array con almeno un elemento. • sono equivalenti al valore FALSE: – lo zero – le stringhe vuote – gli array privi di elementi gianfrasoft.wordpress.com - 2008
  14. 14. PHP5: Flow control / 1 • Il costrutto if-elseif-else non impone l’utilizzo dei delimitatori di blocco delle istruzioni ({…}) se l’istruzione che segue il confronto si compone di una sola riga. if (condizione1) { blocco-istruzioni-1; } if ( $a < $b ) elseif (condizione2) echo '$a è minore di $b'; { elseif ( $a > $b ) blocco-istruzioni-2; { } echo '$a è maggiore di $b'; ... } } else else echo '$a e $b sono uguali'; { blocco-istruzioni-N; } gianfrasoft.wordpress.com - 2008
  15. 15. PHP5: Flow control / 2 • Il costrutto switch-case è più compatto ed autoesplicativo del costrutto if- elseif-else. Può essere usato se la condizione è una soltanto. • L’istruzione break determina l’uscita immediata dopo l’esecuzione del blocco di istruzioni relativo al valore dell’espressione. • Il blocco di default viene eseguito solo se nessuno dei valori descritti nelle case viene restituito dall’espressione. switch (espressione) { case valore-1: switch( $a ) { blocco-istruzioni-1; case 1: break; echo("a è uguale a uno"); case valore-2: break; blocco-istruzioni-1; case 2: break; echo("a è uguale a due"); ... break; default: default: blocco-istruzioni-N; echo("a non é uno né due"); } } gianfrasoft.wordpress.com - 2008
  16. 16. PHP5: Flow control / 3 • Il costrutto while antepone il confronto alle istruzioni; do-while lo postpone determinando che le istruzioni vengano eseguite sempre almeno una volta. • il costrutto continue fa saltare le istruzioni restanti nel blocco. Il costrutto break interrompe il ciclo. while (condizione) { blocco-istruzioni; } $cont = 1; $max = 10; while ( $cont <= $max ) { echo "contatore = $cont <br>"; $cont++; do { } blocco-istruzioni } while (condizione); gianfrasoft.wordpress.com - 2008
  17. 17. PHP5: Flow control / 4 • Il costrutto for espone tre espressioni che determinano: – Assegnazione del valore iniziale della variabile di controllo. – Condizione di interruzione del ciclo. – Espressione di incremento. • il costrutto continue fa saltare le istruzioni restanti e fa passare direttamente all’iterazione successiva. il costrutto break invece fa uscire definitivamente dal ciclo. for (espr1; espr2; espr3) // ciclo for { for ($i = 1; $i <= 5; $i++) blocco-istruzioni; { } echo "$i &egrave; $i"; } gianfrasoft.wordpress.com - 2008
  18. 18. PHP5: Cicli sugli elementi di un array • Le istruzioni while e foreach rappresentano il modo standard di accedere agli elementi di un array: // dichiaro un array $a = array( "Gianfranco" => "portiere", "Nicola" => "attaccante" ); // ciclo while while (list ($key, $val) = each($a)) echo "$key -> $val <br>"; // ciclo foreach foreach ($a as $valore) echo "Valore : $valore<br>"; gianfrasoft.wordpress.com - 2008
  19. 19. PHP5: Funzioni / 1 • La dichiarazione di funzioni avviene con la parola chiave function e può essere dichiarata ovunque nello script PHP. function nome-funzione (lista_degli_argomenti) { blocco-istruzioni; } • Il risultato della funzione viene restituito utilizzando l'istruzione return(valore) che provoca l'uscita dalla funzione. • E’ consentita la definizione di funzioni ricorsive. function fattoriale($n) { if ($n == 0) return = 1; else return ($n * fattoriale($n - 1)); } // Scriverà 120 echo fattoriale(5); gianfrasoft.wordpress.com - 2008
  20. 20. PHP5: Funzioni / 2 • PHP è tollerante rispetto al numero di parametri passati (in eccesso e in difetto). • Le variabili all’interno di una funzione sono private alla stessa. Per richiamare variabili globali si deve utilizzare la parola chiave global. • Le funzioni possono tenere memoria della loro esecuzione mediante l’utilizzo della parola chiave static. • Una funzione definita in uno script è disponibile ovunque in esso. // Scriverà 120 echo fattoriale(5); function fattoriale($n) { if ($n == 0) return = 1; else return ($n * fattoriale($n - 1)); } gianfrasoft.wordpress.com - 2008
  21. 21. PHP5: Funzioni / 3 • Per passare ad una funzione un argomento per riferimento, dovete anteporre un ampersand (&) al nome dell'argomento nella definizione della funzione • Solitamente le funzioni vengono definite in file separati (librerie) da includere all'occorrenza nel programma: – include(filename): Ritorna un warning in caso di fallimento – require(filename): Ritorna un fatal error in caso di fallimento – require_ones(filename) - include_ones(filename): Come sopra ma se il file è già stato incluso non lo include nuovamente. function incrementa_di_5(&$n) { $n += 5; } $est = 3; incrementa_di_5($est); // Scriverà 8 echo $est; gianfrasoft.wordpress.com - 2008
  22. 22. PHP5: Upload di file / 1 • Esiste un metodo standard per effettuare l’upload dei file in PHP5. • Se fileutente è il nome che abbiamo assegnato al campo della form contenente il file da caricare, in caso di successo dell’upload nello script di destinazione troveremo definito l'array associativo $HTTP_POST_FILES con i seguenti valori: – $HTTP_POST_FILES["fileutente"]["tmp_name"] - il nome del file temporaneo (sul server); – $HTTP_POST_FILES["fileutente"]["name"] - il nome originario del file (sul client); – $HTTP_POST_FILES["fileutente"]["size"] - la dimensione (in byte) del file; – $HTTP_POST_FILES["fileutente"]["type"] - il tipo di file, secondo la codifica MIME (ad esempio text/html). • Il form da dove viene caricato il file deve obbligatoriamente utilizzare come metodo di trasferimento il metodo POST. gianfrasoft.wordpress.com - 2008
  23. 23. PHP5: Upload di file / 2 <? /* A proposito… ecco un modo sicuro di scrivere i commenti in HTML */ ?> <form enctype="multipart/form-data“ action="<?php echo $_SERVER["PHP_SELF"] ?>“ method="POST"> <input type="hidden" name="MAX_FILE_SIZE" value="10000"> <h3> Fai l'upload di questo file <p><input name="uploadfile" type="file"> <p><input type="submit" value="Invia File"></p> </h3> <p><input type=“reset" value="Cancella!“ /></p> </form> $file = $HTTP_POST_FILES["uploadfile"]; if (isset($file[tmp_name])) // notare l’assenza delle " nell’array { echo "<h3>Hai caricato il file $file[name], "; echo "la cui dimensione è $file[size] bytes. "; copy($file[tmp_name], "./UPLOADS/$file[name]") // copia file or die("<br>Non posso copiare il file."); echo "<p>Il nome sul server è <strong>$file[tmp_name]</strong>."; echo "<p>&egrave; stato salvato nella cartella <strong>UPLOADS/$file[name]</strong></h3>."; }
  24. 24. PHP5 seconda parte - FINE Gianfranco Fedele Analista programmatore g.fedele@dinamicadigitale.it www.linkedin.com/in/gianfrasoft

×