PHP 3. Interazione con il browser

Похожие документы
Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

04/05/2011. Lezione 6: Form

1) Il client(browser utilizzato) invia al server i dati inseriti dall utente. Server

HTML HTML. HyperText Markup Language. Struttura di un documento. Gli elementi essenziali di un documento HTML sono i seguenti TAG: <HTML>...

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Interazione con l utente : i moduli.

DURANTE LA NAVIGAZIONE NEI SITI WEB I VISITATORI NON SOLO POSSONO CONSULTARE INFORMAZIONI STATICHE

Dott.ssa Adriana Pietramala

Lezione 6: Form 27/04/2012

I Tag dell html. Parte quarta

Il Protocollo HTTP e la programmazione di estensioni Web

Applicazioni Web: meccanismi per il passaggio di informazioni tramite HTTP Corso di Applicazioni Telematiche

Indice Configurazione di PHP Test dell ambiente di sviluppo 28

I FORM. L'attributo action contiene l'url del file php a cui devono essere inviati i file per essere elaborati.

19. LA PROGRAMMAZIONE LATO SERVER

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

PHP. A. Lorenzi, R. Giupponi, D. Iovino LINGUAGGI WEB. LATO SERVER E MOBILE COMPUTING Atlas. Copyright Istituto Italiano Edizioni Atlas

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.a HTTP request e HTTP response (form e link)

Il linguaggio PHP. Parte I Introduzione. Paolo Milazzo

BASI DI DATI Cos è il PHP. Cos è il PHP. Esercitazione su PHP & MySQL

Esercizi di JavaScript

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

ESEMPI DI FORM (da

RELAZIONE SCRITTA RELATIVA AL PROGRAMMA DI GESTIONE SITO E-COMMERCE

Lezione III: Oggetti ASP e interazione tramite form HTML

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.c Cookies e sessioni. Goy - a.a. 2012/2013 Programmazione Web 1

PHP e MySQL. Guida scaricata da

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

MILANO - DIJON - TVA: FR

GUIDA UTENTE PRIMA NOTA SEMPLICE

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Laboratorio di reti II: PHP

Sicurezza Informatica: Tecniche di SQL INJECTION

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

CONFIGURAZIONE SERVER APACHE (XAMPP): ACCESSO SICURO A DIRECTORY DEL FILE SYSTEM.

Dexma Newsletter System

Cookie e Webstorage. Vediamo ora i metodi dell oggetto localstorage. Per memorizzare un valore si utilizza il metodo setitem:

Integrazione InfiniteCRM - MailUp

GateManager. 1 Indice. tecnico@gate-manager.it

Java Server Pages (JSP) JSP o Servlet? Java Server Pages (JSP) Java Server Pages Costituiscono un estensione della tecnologia delle servlet

Corso basi di dati Installazione e gestione di PWS

Obiettivo dell esercitazione

Come posso visualizzare la mia posta senza utilizzare programmi per la posta elettronica (es. Outlook Express, Outlook 2003, etc.)?

Appunti su ASP (Active Server Pages)

Analisi di massima: L utente dovrà inserire un numero limite, e tramite vari calcoli verrà stampato a video la sequenza.

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

GERARCHIE RICORSIVE - SQL SERVER 2008

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Lezione nr. 5. Per creare un modulo è necessario avere delle conoscenze di base del linguaggio HTML. Niente di difficile ovviamente!

Il linguaggio HTML - Parte 3

Outlook Plugin per VTECRM

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

DATABASE IN RETE E PROGRAMMAZIONE LATO SERVER

MANUALE OPERATIVO PlainPay per l autenticazione e la sicurezza dell Internet Banking

Breve introduzione al Javadoc

Applicazione ASP di esempio

GUIDA UTENTE ANALISI MEDICHE PAVANELLO - PORTALEMEDICA. Data 27/09/2011 Versione 2.2 Applicazioni GUIDA UTENTE SOGGETTI TERZI

Siti interattivi e dinamici. in poche pagine

Protocolli applicativi: FTP

1) GESTIONE DELLE POSTAZIONI REMOTE

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

istruzioni per l uso

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

MANUALE D USO DELLA PIATTAFORMA ITCMS

Manuale d uso Lexun Area Riservata proprietà di logos engineering - Sistema Qualità certificato ISO 9001 Det Norske Veritas Italia

Esercitazione 8. Basi di dati e web

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

MANUALE PER CONSULTARE LA RASSEGNA STAMPA VIA WEB

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

ACCESSO AL SISTEMA HELIOS...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Dropbox di classe. É un servizio internet fornito gratuitamente (funzioni base).

PYTHON Inviare dati con i form A cura di Silvio Bonechi [sabandini_at_tiscali_dot_it] per

NVU Manuale d uso. Cimini Simonelli Testa

Guida all'uso del CMS (Content Management System, Sistema di Gestione dei Contenuti)

Nuovo server E-Shop: Guida alla installazione di Microsoft SQL Server

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

Guida alla registrazione on-line di un DataLogger

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

RELAZIONE DI PROGETTO DELL ESAME STRUMENTI PER APPLICAZIONI WEB

Funzioni in C. Violetta Lonati

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Manuale Utente Albo Pretorio GA

2015 PERIODO D IMPOSTA

COME CREARE UNA COMUNICAZIONE / NEWSLETTER

Guida all uso di. a cura dell Area Economia Applicata (AEA) - IPI

Flavio De Paoli

Manuale di configurazione per iphone

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Транскрипт:

PHP 3 Interazione con il browser

Interazione browser server Quando un browser contatta un server gli invia alcune informazioni (si veda la lezione su HTTP) Ci sono sei tipi di informazioni a cui il server può accedere. Alcune relative alla configurazione del server altre sono passate dal browser al server Collettivamente, si fa riferimento a tali informazioni come EGPCS (Environment, GET, POST, Cookie e Server) Gli script PHP possono accedere a tali informazioni Tecnologie di Sviluppo per il WEB 2

PHP e EGPCS 1 PHP crea sei (5+1) array globali associativi per contenere le informazioni EGPCS $_SERVER Conserva informazioni sul server $_SERVER['DOCUMENT_ROOT'] $_ENV Conserva i valori delle variabili di ambiente Queste variabili sono importate nello spazio globale PHP dall ambiente in cui il parser PHP è in esecuzione ($_ENV['HOME']) Tecnologie di Sviluppo per il WEB 3

PHP e EGPCS 2 $_GET Conserva i valori inviati tramite GET $_POST Conserva i valori passati da un modulo HTML inviato tramite POST $_COOKIE Conserva gli eventuali cookie passati tramite una richiesta HTTP $_FILES Conserva informazioni relative ai file che il browser invia al server Tecnologie di Sviluppo per il WEB 4

Nota Gli array associativi precedenti sono degli alias ai seguenti array associativi HTTP_COOKIE_VARS HTTP_GET_VARS HTTP_POST_VARS Sono array del tipo HTTPX_VARS, dove X è uno degli array analizzati prima Dalla versione PHP 4.1.0 sono in disuso, ma potreste trovarli in manuali o codice vecchio Il loro uso adesso è deprecato Tecnologie di Sviluppo per il WEB 5

Esempio <h2 style="text-align:center; color:red;"> Stampa Variabili $_SERVER</h2> <table border cellpadding=2> <tr> <th> Variabile </th> <th> Valore </th> </tr> <?php foreach($_server as $indice => $elemento) { echo "<tr><td>$indice</td> <td>$elemento</td>\n"; }?> </table> ESEMPIO Tecnologie di Sviluppo per il WEB 6

Accesso a pagine protette Utilizzeremo Autenticazione HTTP Basic non è sicura...serve solo a non far rompere il protocollo http con password avanzate si puo' usare in piccole reti private Informazioni che troviamo in $_SERVER[ ] Se settate (perché sono state utilizzate) ESEMPIO Tecnologie di Sviluppo per il WEB 7

<?php // DEVE ESSERE LA PRIMA LINEA DEL DOCUMENTO $user = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; if (!isset($user) verifica($user,$password)==false){ header('www-authenticate: Basic realm="trop Secret" '); header('http/1.1 401 Unauthorized'); echo 'Qui inseriamo il messaggio che deve comparire'; echo 'se si preme il tasto Annulla'; exit; } else { echo 'Qui inseriamo il messaggio che deve comparire'; echo 'se l autenticazione è andata a buon fine'; }?> Tecnologie di Sviluppo per il WEB 8

Funzione di verifica password function verifica($user, $password) { //qui possiamo accedere ad un database // per verificare se ad $user corrisponde // $password if($user == "ambrogio" && $password ="pippo") return true; else return false; } Tecnologie di Sviluppo per il WEB 9

Codice da inserire in ogni pagina da proteggere <?php // DEVE ESSERE LA PRIMA LINEA DEL DOCUMENTO $user = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; if (!isset($user)){ header('www-authenticate: Basic realm="sezione Protetta del Sito" '); header('http/1.1 401 Unauthorized'); } else {.. } Si può gestire il tutto in un modo migliore con le sessioni, dettagli in seguito Tecnologie di Sviluppo per il WEB 10

Altro modo per organizzare il codice <?php $auth_ok = 0; $user = $_SERVER['PHP_AUTH_USER']; $password = $_SERVER['PHP_AUTH_PW']; if(isset($user) && isset($password) && verifica($user,$password)) { $auth_ok = 1; } if(!$auth_ok ) { header('www-authenticate: Basic realm="sezione Protetta Sito" '); header('http/1.1 401 Unauthorized'); } else { // PAGINA DA PROTEGGERE }?> Tecnologie di Sviluppo per il WEB 11

First line...da ricordare!!! Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file. Tecnologie di Sviluppo per il WEB 12

Autenticazione sicura: DIGEST Http autenticazione DIGEST Trasmette i dati cifrati (con md5) Usare con cautela come black-box Si può ottenere un simile risultato configurando opportunamente il server Apache mediante il file.htaccess Tutti i documenti presenti in una data directory saranno protetti da login e password Tecnologie di Sviluppo per il WEB 13

Moduli HTML e PHP Si possono usare i moduli HTML per passare dei dati a script PHP Gli script PHP possono ricevere i valori di input passati da un controllo in un modulo usando un nome di una variabile che corrisponde a quella specificata attraverso l attributo NAME Se REGISTER_GLOBALS è settato ad OFF per ricevere un input da un modulo passato con METHOD settato a POST bisogna usare invece $_POST[ NomeVariabile ]; Vedi slide successiva Tecnologie di Sviluppo per il WEB 14

Importante!!! A partire da PHP 4.2.1, per motivi di sicurezza, PHP richiede di default un meccanismo differente per ricevere input da un modulo Per ripristinare il vecchio modo di ricevere input da un modulo bisogna settare ad ON la direttiva REGISTER_GLOBALS nel file di configurazione php.ini (dalla versione 6 verrà abolita) Ogni variabile relativa ad un modulo è memorizzata in un array associativo accessibile attraverso il nome del controllo <input type= text name= pippo > corrisponde in PHP a $_GET['pippo'] Tecnologie di Sviluppo per il WEB 15

Accesso ai parametri di un modulo Per accedere ai parametri di un modulo (valori associati ai controlli del modulo) all interno di uno script PHP usiamo gli array $_POST, $_GET e $_FILE Gli indici (chiavi) degli array sono i nomi dei controlli utilizzati nel modulo In HTML è legale usare il punto (.) all interno di un nome di un controllo, ma in PHP è vietato I punti nel nome di un controllo sono convertiti in underscore (_) nell array (slide successiva) Tecnologie di Sviluppo per il WEB 16

Nota In HTML è legale usare il punto (.) all interno di un nome di un controllo, ma in PHP è vietato <input type= text name= pippo.pluto > I punti nel nome di un controllo sono convertiti in underscore (_) nell array $_GET['pippo_pluto'] esempio Tecnologie di Sviluppo per il WEB 17

Esempio di get fuori dal modulo A proposito di GET, vediamo un suo uso, senza form, ma con una àncora: ESEMPIO Tecnologie di Sviluppo per il WEB 18

Mappe lato server HTML <HTML> <HEAD><TITLE>Uso di ISMAP </TITLE> <STYLE> BODY {font-size:14pt;} </STYLE> </HEAD> <BODY> <a href="ismap.php"> <IMG ISMAP SRC="donut.gif" width=200 border=1> </a> </BODY> ESEMPIO </HTML> Tecnologie di Sviluppo per il WEB 19

Mappe lato server PHP <?php echo "<p>valori contenuti nell'array \$_GET</p>\n"; foreach($_get as $chiave => $elemento) { echo "$chiave => $elemento<br>\n"; } reset($_get); echo "<p>stampa della prima chiave dell'array</p>\n"; echo key($_get)."<br>\n"; echo "<p>stampa delle coordinate passate</p>\n"; $valori = explode(",",key($_get)); $x=$valori[0]; $y=$valori[1]; echo "x=$x y=$y<br>";?> Tecnologie di Sviluppo per il WEB 20

Mappe lato server o lato client? Secondo w3 per HTML4.01 Client-side. When a user activates a region of a client-side image map with a mouse, the pixel coordinates are interpreted by the user agent. The user agent selects a link that was specified for the activated region and follows it. Server-side. When a user activates a region of a server-side image map with a mouse, the pixel coordinates of the click are sent to the server-side agent specified by the href attribute of the A element. The server-side agent interprets the coordinates and performs some action. Tecnologie di Sviluppo per il WEB 21

Mappe lato server o lato client? Secondo w3 per HTML4.01 Client-side image maps are preferred over server-side image maps for at least two reasons: they are accessible to people browsing with non-graphical user agents and they offer immediate feedback as to whether or not the pointer is over an active region. Tecnologie di Sviluppo per il WEB 22

Esempio di mappa lato server <HTML> <HEAD><TITLE>Uso di ISMAP </TITLE> <STYLE> BODY {font-size:14pt;} </STYLE> </HEAD> <BODY> <a href="http://localhost/mappa-header.php"> <IMG ISMAP src="mappacitta.gif" width= "200" border= "1" > </a> </BODY> ESEMPIO </HTML Tecnologie di Sviluppo per il WEB 23

Codice PHP <?php prima di ogni output!! $valori = explode(",",key($_get)); $x=$valori[0]; $y=$valori[1]; if (25 <= $x and $x<=175) { if (35 <= $y and $y<=60) header('location: avellino.html'); elseif (90 <= $y and $y<=115) header('location: benevento.html'); elseif (140 <= $y and $y<=165) header('location: caserta.html'); elseif (195 <= $y and $y<=220) header('location: napoli.html'); elseif (245 <= $y and $y<=270) header('location: salerno.html'); Else header('location: fuori-mappa.html'); } else header('location: fuori-mappa.html');?> Tecnologie di Sviluppo per il WEB 24

Input type=img esempio (1/2) <form method="get" action="image.php" > <input type="image" src="donut.gif" name="cane"> </form> Nella URL vengono passate le coordinate cane.x e cane.y Tecnologie di Sviluppo per il WEB 25

Input type=img esempio (2/2) <?php echo "<p>valori contenuti nell'array \$_GET</p>\n"; foreach($_get as $indice => $elemento) echo "$indice => $elemento<br>\n"; reset($_get); echo "<p>stampa delle coordinate passate</p>\n"; $x=$_get['cane_x']; $y=$_get['cane_y']; echo "x=$x y=$y<br>";?> ESEMPIO Tecnologie di Sviluppo per il WEB 26

Parametri a più valori Il tag SELECT permette di scegliere tra una lista di opzioni Per essere sicuri che PHP riconosca i valori multipli che il browser passa ad uno script è necessario che il valore dell attributo NAME finisca con [ ] altrimenti le vbl sono sovrascritte Il valore presente nelle collezioni $_POST o $_GET sarà un array invece di una semplice stringa La stessa cosa vale anche per caselle di spunta (checkbox) che hanno lo stesso nome Tecnologie di Sviluppo per il WEB 27

Esempio <select name= linguaggi[ ] multiple> <option value= c > C </option> <option value= cpp > C++ </option> <option value= java >Java </option> </select> $scelte = $_GET[ linguaggi ]; $scelte è un array lungo count($scelte) ESEMPIO Tecnologie di Sviluppo per il WEB 28

Richiesta inviata al server Parentesi quadre [] Tecnologie di Sviluppo per il WEB 29

pasta.html: Scegli il condimento <FORM METHOD="POST" ACTION="http://localhost/stampa.php"> Scegli il condimento che preferisci: <BR> <INPUT TYPE="CHECKBOX" NAME="condimento[]" VALUE="ragù"> Ragù <BR> <INPUT TYPE="CHECKBOX" NAME="condimento[]" VALUE="panna" CHECKED> Panna<BR> <INPUT TYPE="CHECKBOX" NAME="condimento[]" VALUE="genovese"> Genovese <P> <INPUT TYPE="submit" VALUE="Invia i dati"> <INPUT TYPE="reset" VALUE="Cancella tutto!"> </FORM> Tecnologie di Sviluppo per il WEB 30

Risultato ESEMPIO Tecnologie di Sviluppo per il WEB 31

Codice stampa.php <?php $salsa = $_POST['condimento']; echo "I condimenti che preferisci sono: <br>"; $cnt = count($salsa); for($i=0; $i < $cnt; $i++) { echo "Condimento "; echo $i+1; echo ": $salsa[$i] <br>"; }?> Tecnologie di Sviluppo per il WEB 32

Risultato di stampa.php Tecnologie di Sviluppo per il WEB 33

Esempio: Indovina i numeri <form METHOD="POST" ACTION="verifica.php"> <h2> Indovina la mia combinazione </h2> Scegli un numero da 1 a 9 <br> <input type="radio" name= "scelta1" value=1 >1. <input type="radio" name= "scelta1" value=9 >9<br> Scegli un secondo numero: <input type="radio" name= "scelta2" value=1 >1. <input type="radio" name= "scelta2" value=9 >9<br> <input TYPE="submit" VALUE="invia"> <input TYPE="reset " VALUE="resetta"> </form> Tecnologie di Sviluppo per il WEB 34

Esempio: verifica.php <?php $com1=3; $scelta1 = $_POST['scelta1']; $com2=9; $scelta2 = $_POST['scelta2']; if (( $scelta1 == $com1 ) && ( $scelta2 == $com2)) print "Hai indovinato i due numeri $com1 $com2!"; elseif (( $scelta1 == $com1 ) ( $scelta2 == $com2)) print "Hai indovinato solo un numero"; else print "Hai sbagliato tutto! ";?> ESEMPIO Tecnologie di Sviluppo per il WEB 35

Esempio: indovina.php <form METHOD="POST" ACTION="verifica.php"> <h2> Indovina la mia combinazione </h2> Scegli un numero da 1 a 9: Radio button generati <?php dinamicamente for($i=1;$i<10;$i++){ echo "<input type=\"radio\" name= \"scelta1\" value=$i >$i "; }?> <br> Scegli un secondo numero: <?php for($i=1;$i<10;$i++){ echo "<input type=\"radio\" name= \"scelta2\" value=$i >$i "; }?> <br> <input TYPE="submit" VALUE="invia"> <input TYPE="reset" VALUE="resetta"> </form> Tecnologie di Sviluppo per il WEB 36

Moduli auto-chiamanti È possibile utilizzare lo stesso script PHP sia per generare un modulo sia per elaborarlo All interno dello script possiamo conoscere il nome dello script stesso È sufficiente accedere al valore di $_SERVER['PHP_SELF'] Questa variabile contiene il nome dello script corrente Tecnologie di Sviluppo per il WEB 37

Esempio 1 <html> <head><title> Conversione di Temperatura </title></head> <body> <?php $fahr = $_POST['fahrenheit']; if (is_null($fahr)) {?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="post"> Temperatura Fahrenheit : <input type="text" name="fahrenheit"> <input type="submit" name="converti in Celsius!"> </form> Tecnologie di Sviluppo per il WEB 38

Esempio 2 <?php } else { $celsius = ($fahr - 32) * 5/9; printf("%.2ff è %.2fC", $fahr, $celsius); }?> </body> </html> ESEMPIO Tecnologie di Sviluppo per il WEB 39

Moduli appiccicosi sticky form Sono script PHP che una volta terminata l elaborazione mostrano sia i risultati sia il modulo E.g., dopo una ricerca con Google otteniamo una serie di link soddisfacenti la richiesta più la casella di controllo contenente la richiesta effettuata prima Il seguente codice per la conversione di gradi Fahrenheit in gradi Celsius ne è un esempio Tecnologie di Sviluppo per il WEB 40

<html> <head><title> Conversione di Temperatura </title></head> <body> <?php $fahr =$_GET['fahrenheit'];?> /* vedi il sorgente */ <form action="<?php echo $_SERVER['PHP_SELF']?>" method="get"> Temperatura Fahrenheit : <input type="text" name="fahrenheit" value="<?php echo $fahr?>"> <input type="submit" name="converti in Celsius!"> </form> <?php if (!is_null($fahr)) { $celsius = ($fahr -32)*5/9; printf("%.2ff è %.2fC", $fahr, $celsius); }?> </body> </html> ESEMPIO Tecnologie di Sviluppo per il WEB 41

In generale Se lo script è invocato senza parametri, allora viene visualizzato il modulo con cui fornire i parametri Se lo script è invocato con parametri allora viene visualizzato il modulo con i valori dei controlli già settati e il risultato dell elaborazione dei parametri forniti Tecnologie di Sviluppo per il WEB 42

Sticky-form per checkbox Non possiamo ri-mostrarle perché sono passate solo quelle checked... quindi dobbiamo fare altro Chiaramente si suppone che tutte le checkbox hanno lo stesso nome Si crea un array contenente il valore della checkbox e quello che deve comparire vicino ad ognuna di esse. Si esegue un ciclo foreach per creare la lista delle checkbox eventualmente già spuntate ESEMPIO Tecnologie di Sviluppo per il WEB 43

Generazione form <?php $scelte = $_GET['gusti']; if (! is_array($scelte)) { $scelte = array(); }?> <form action="<?php echo $_SERVER['PHP_SELF']?>" method="get"> Scegli i gusti della tua pizza:<br> <?php make_checkboxes('gusti', $scelte, $tipi_condimento);?> <br> <input type="submit" name="s" //vedi il sorgente... value="ordina la pizza!"> </form> Tecnologie di Sviluppo per il WEB 44

Parametri di make_checkboxes $name nome del campo checkbox della form (le parentesi quadre [] sono aggiunte dalla funzione) $query parametri attuali della richiesta GET $options array di (value=>label) per le checkbox tutte le opzioni presenti in $query saranno marcate come checked Tecnologie di Sviluppo per il WEB 45

Funzione per creare le checkbox function make_checkboxes ($name, $query, $options ) { foreach ($options as $value => $label) { printf('<input type="checkbox" name="%s[]" value="%s" ', $name, $value); if (in_array($value, $query)) { echo "checked "; } echo "> $label <br>\n"; } } $value rappresenta il valore della checkbox che sarà contenuto nell array $query se quella checkbox viene selezionata. I valori delle checkbox devono essere le chiavi dell array $options Tecnologie di Sviluppo per il WEB 46

Upload di file 1 Attraverso il tag <input type= file name= NomeFile > possiamo inviare un file al server WEB Ricordarsi di settare l attributo ENCTYPE del tag FORM enctype="multipart/form-data" Si può settare nel file php.ini anche la directory dove scaricare temporaneamente i file Settare la direttiva upload_tmp_dir Tecnologie di Sviluppo per il WEB 47

Upload di file 2 Informazioni sul file inviato si trovano nell array associativo $_FILES[ NomeFile ] <input type= file name= NomeFile > Ogni elemento di $_FILES è esso stesso un array di cinque elementi con indici: name type tmp_name error size Tecnologie di Sviluppo per il WEB 48

Upload di file 3 name Indica il nome del file originale sulla macchina dell utente. type mime-type del file inviato tmp_name Nome temporaneo del file sul server WEB size Grandezza del file inviato error Codice di errore associato all upload del file ESEMPIO Tecnologie di Sviluppo per il WEB 49

Upload di file 4 Per verificare se il file è stato scaricato correttamente si usa la funzione is_uploaded_file(nomefile) Esempio if(is_uploaded_file($_file[ NomeFile ][ tmp_name ])) Per spostare il file scaricato in un altra directory si usa la funzione move_uploaded_file att.ne ai permessi!!! Tecnologie di Sviluppo per il WEB 50

Espressioni regolari (compatibili Perl) Si utilizzano quando si ha bisogno di funzionalità più spinte per ricerca di stringhe o meglio in stringhe. Expr. Reg. = Stringa che rappresenta un pattern (insieme, possibilmente infinito) di stringhe. Confrontare una stringa s con l'espressione regolare ER, consiste nel verificare se ER contiene s. In gergo non pulito... ER matcha s Tecnologie di Sviluppo per il WEB 51

Espressioni Regolari Ci sono vari usi (ne vediamo solo uno) 1) Matching Estrazione di info da una stringa 2) Sostituzione Sostituire sottostringhe nuove con quelle trovate (matchate...) 3) Split di stringhe in pezzi di array 4)... ESEMPIO Tecnologie di Sviluppo per il WEB 52

Caratteri speciali Obbligatori i delimitatori: /, [, (, {,<,#,+,%,',... ^ : inizio della stringa, $ : fine della stringa int preg_match (string $pattern, string $subject [, array &$matches]) preg_match('/indi/', 'gnati', $matches) restituisce false e l'array $matches vuoto preg_match('/gnati/', 'indignati') : TRUE preg_match('/^gnati/', 'indignati') : FALSE preg_match('/gnati$/', 'indignati') :TRUE. (punto) : rappresenta un singolo carattere preg_match('/.occa/', 'bocca') : TRUE ESEMPIO Tecnologie di Sviluppo per il WEB 53

Classi di caratteri preg_match('c[aeiou]t', 'I cut my hand') preg_match('c[aeiou]t', 'My own cat ') preg_match('c[aeiou]t', 'My certificates') Restituiscono tutte e tre true preg_match('c[aeiou]t', 'My cronometer') Restituisce false Si può negare (uso di caret differente) preg('c[^aeiou]t', 'I cut my hand') Viene valutata a false Tecnologie di Sviluppo per il WEB 54

Alternative (OR) preg_match('cat dog', 'my cat's name is Remo'); preg_match('cat dog', 'my dog's name is Romolo'); preg_match('^([a-z] [0-9])', 'La mia casa'); False preg_match('^([a-z] [0-9])', 'la mia casa'); True preg_match('^([a-z] [0-9])', '1 ragazze per me'); true Tecnologie di Sviluppo per il WEB 55

Sequenze di ripetizione? 0 oppure 1 * 0 oppure più + 1 oppure più {n} esattamente n {n,m} almeno n, al più m {n,} almeno n preg_match('(ca)+t', 'cacacacacat') True preg_match('^((55[67]{1}) (087) (056))/[0-9]{6}$', $Matricola)) Tecnologie di Sviluppo per il WEB 56