Uso di form HTML per inviare dati nel web dinamico. I form HTML ed il web dinamico. Struttura di base dei form HTML. Accesso ai dati di un form HTML

Documenti analoghi
Uso di form HTML per inviare dati nel web dinamico. I form HTML ed il web dinamico. Accesso ai dati di un form HTML. Struttura di base dei form HTML

I form HTML ed il web dinamico

I form HTML ed il web dinamico. Uso di form HTML per inviare dati nel web dinamico. Struttura di base dei form HTML

I form HTML ed il web dinamico

I form HTML ed il web dinamico. Uso di form HTML per inviare dati nel web dinamico. Accesso ai dati di un form HTML. script client-side

Uso di form HTML per inviare dati nel web dinamico. I form HTML ed il web dinamico. Struttura di base dei form HTML. Form: controlli di input

HTML 6. Il modulo. Tipi di controlli. Esempio di modulo. I moduli a.k.a. form

I moduli HTML Interazione per l invio di informazioni in Internet

HTML 6. I moduli a.k.a. form

HTML Interazione con l utente

D B M G Il linguaggio HTML

Programmazione Web D B M G. Il linguaggio HTML

@2011 Politecnico di Torino 1

Modulo o Form in Html

HTML: CSS: Le proprietà di base per dare stile ai form

I campi di un form: come utilizzare il tag Input

HTML: FORM. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

04/05/2011. Lezione 6: Form

Laboratorio Progettazione Web PHP e FORMs HTML - Lezione 8. Andrea Marchetti IIT-CNR 2011/2012

Il tag form indica l'inizio della costruzione di un modulo. Necessita del tag di chiusura

Laboratorio di Informatica (Chimica)

HTML Settima lezione. 7 Aprile di Ivano Stranieri

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

HTML il linguaggio per creare le pagine per il web

Programmazione Web D B M G. Il linguaggio HTML

HTML il linguaggio per creare le pagine per il web

@2011 Politecnico di Torino 1

@2011 Politecnico di Torino 1

HTML il linguaggio per creare le pagine per il web

HTML il linguaggio per creare le pagine per il web

HTML il linguaggio per creare le pagine per il web

Form HTML. <form> campi del modulo </form>

Esercizi su HTML5 e form

Interazione con l utente : i moduli.

Strumenti a disposizione

HTML il linguaggio per creare le pagine per il web

HTML e interattività FORM

Informatica di base Laboratorio di HTML Dott. Serena Villata A.A. 2004/05

HTML FORM E PHP. Programmazione Web 1

Linguaggi di Programmazione per il Web Parte 7

Esercizi su JavaScript, DOM e Web Storage

HTML il linguaggio per creare le pagine per il web

Progettazione di siti web a.a. 2015/16

Tito Flagella - Il protocollo HTTP

LEZIONE 5. Introduzione a Javascript

HTML ELEMENTI CONTENITORI. Elementi contenitori. <body> Nel body ci sono elementi vari (testi, immagini, moduli...)

I TAG - Form (moduli) (1/21)

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

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

Tecnologie di Sviluppo per il Web

Lezione 6: Form 27/04/2012

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore

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

JavaScript. Caratteristiche del JavaScript. Javascript consente di rendere dinamiche le pagine HTML

Internet, il web e il linguaggio HTML. percorso 3. Form

Linguaggi di scripting

Tecnologie di Sviluppo per il Web

Laboratorio di Basi di Dati/Basi di dati per Bioinformatica. Docenti: Alberto Belussi e Carlo Combi (lucidi a cura di Alberto Belussi) Lezione 5

HTML Sintassi di HTML Tag principali per i contenuti I Forms

"-//W3C//DTD XHTML 1.1//EN

Il Web come Interfaccia Utente di un Sistema Informativo

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

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

ESEMPI DI FORM (da

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST

Laboratorio di Basi di Dati e Web/Basi di dati e Multimedia. Docenti: Alberto Belussi e Carlo Combi Lezione 5

Sicurezza delle applicazioni web: protocollo HTTP

ELEMENTI INTERATTIVI

ISTITUTO ISTRUZIONE SUPERIORE "Q. Sella" BIELLA

Lato client: vuol dire che le operazioni programmate vengono svolte e visualizzate direttamente sul computer dell'utente collegato

JavaScript (4) Programmazione lato client. document.forms[] Oggetto form. Oggetto form. È uno degli oggetti più importanti del DOM

Programmazione lato client. JavaScript (4) Applicazioni di Rete M. Ribaudo - DISI. Oggetto form. Applicazioni di Rete M.

PHP & MySQL. Giselda De Vita

Mantenimento dello stato

Linguaggi e tecnologie per il Web 2016/2017 Facsimile di un compito d esame

Dott.ssa Adriana Pietramala

IL LIVELLO APPLICAZIONI WEB e HTTP

I Tag dell html. Parte quarta

NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) E N G I N E = I

Metodologie Informatiche Applicate al Turismo

Appunti dei corsi di

Università di Bergamo Facoltà di Ingegneria. Applicazioni Internet B. Paolo Salvaneschi B3_2 V1.22. HTML Parte B

IL LIVELLO APPLICAZIONI WEB e HTTP

Mantenimento dello stato

Laboratorio di Basi di Dati Web/MM

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

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

Come quando si usa un CGI il tag <form action = script method= post > deve richiamare lo script in php che elabora i dati.

Transcript:

I form HTML ed il web dinamico Antonio Lioy < lioy@polito.it > Politecnico di Torino Dip. Automatica e Informatica orario.html Uso di form HTML per inviare dati nel web dinamico partenza arrivo data INVIA CANCELLA orario.php orario.php Torino Roma 6:50 8:00 7:45 8:55 browser from=torino&to=roma&day=31/03/07 <html> </html> server (dinamico) orario.html partenza arrivo data INVIA Accesso ai dati di un form HTML da uno script client-side orario.php Torino Roma 6:50 8:00 7:45 8:55 browser CANCELLA Errore: specificare arrivo from=torino to= day=31/03/07 script script client-side from=x&to=y&day=d <html>... </html> orario.php server (dinamico) Struttura di base dei form HTML NAME (o ID): nome simbolico per far riferimento al form ACTION: URL relativa a script CGI, PHP, ASP o a qualsiasi tipo di elaborazione sul server METHOD: GET oppure POST gli elementi di un form sono detti controlli <form name="f1" method="get" action="http://..."> <input...> <select...>... <input type="submit"...> <input type="reset"...> tag INPUT Form: controlli di input TYPE: text, password, checkbox, radio, image, file, hidden, submit, reset, button NAME: nome simbolico (si può usare ID se è unico) per passare i dati al server via HTTP per accedere all elemento da script client-side (es. JavaScript o VBScript) VALUE: contenuto iniziale del campo o valore da inviare <input type=... name=... value=...> SUBMIT Form: pulsanti creato tramite tag INPUT invia i dati del form al server web RESET creato tramite tag INPUT imposta tutti controlli del form al valore di default BUTTON creato tramite tag BUTTON type=submit reset button più ricco (es. testo + immagine) rispetto a INPUT SUBMIT/RESET ed usabile anche fuori da un form A.Lioy - Politecnico di Torino (2003-2017) M-1

IMAGE Form: pulsante con immagine creato tramite tag INPUT trasmette le coordinate X e Y (in pixel) del punto ove l'utente ha fatto click sull'immagine name.x e name.y (in JS) name_x e name_y (in PHP) effetto collaterale: invia tutti i dati del form al server se non servono le coordinate X e Y (ma si vuole un'immagine come pulsante) allora meglio BUTTON src=uri_immagine height= width= alt= NOTA: problema con le dimensioni in pixel Form: controlli orientati al testo <input type=text name= > zona di testo <input type=password name= > come type=text ma visualizza i caratteri come * NON è un metodo sicuro per celare un password <input type=hidden name= value= > valore fisso da trasmettere al server di nascosto NON è un metodo sicuro per celare un dato <textarea rows=nr cols=nc name= > testo iniziale </textarea> zona di testo di NR righe, ciascuna di NC caratteri Esempio di form (text, password) <form name="f" action="/cgi/query" method="get"> <p> // nota: possibile usare (name) invece di (id) your name: <input type="text" id="nome"> your home page: <input type="text" id="home" value="http://"> password: <input type="password" id="pswd"> <input type="submit" value="ok"> <input type="reset" value="annulla"> [ RW ].value [ RW ].valueasdate Form: API per <input> [ RW ].valueasnumber legge o scrive il valore associato [ RW ].checked legge o imposta la stato di selezione [ RO ].files elenca i file selezionati [ RO ].list indica <datalist> associato [ W ].stepup(n).stepdown(n) aumenta o diminuisce il valore di step*n Interazione tra form e script script associato ad eventi DOM onclick = esegui_azione( ); all interno dello script, i dati del form sono letti tramite il modello DOM in due modi diversi gerarchia dei nomi p = document.f.pswd.value estrazione diretta dell elemento con ID unico p = getelementbyid("pswd").value Interazione form-script (name) <script> function display(x) { alert ("nome: " + x.nome.value) alert ("home page: " + x.home.value) alert ("password: " + x.pswd.value) </script> <form name="f" action="/cgi/query" method="get" onsubmit="display(f)"> uhp_name.html A.Lioy - Politecnico di Torino (2003-2017) M-2

Interazione form-script (id) <script type="text/javascript"> function display( ) { n = document.getelementbyid("nome").value h = document.getelementbyid("home").value p = document.getelementbyid("pswd").value alert ("nome: " + n) alert ("home page: " + h) alert ("password: " + p) </script> <form name="f" action="/cgi/query" method="get" onsubmit="display()"> uhp_id.html Form: parametri di <input> size, maxlength, minlength dimensione del campo, lunghezza min/max del dato list elenco di possibili valori (puntatore a <datalist>) min, max, step valori dipendono dal tipo di input (number, date, ) readonly, required, multiple Booleani (es. readonly="readonly" o assente) pattern JS regexp per limitare le combinazioni di caratteri placeholder suggerimento (inserito all'interno del campo) Form: datalist definisce valori per fare autocompletamento di un campo di testo è diverso da un menù perché non garantisce che: vengano introdotti solo i valori predefiniti (possibile inserire testo libero) i valori predefiniti non siano modificati (possibile alterarli in qualunque modo) <input type="url" list="asp" name="sede"> <datalist id="asp"> <option value="http://www.polito.it/"> <option value="http://www.polimi.it/"> </datalist> asp.html Form: menù tag SELECT per racchiudere le varie opzioni tag OPTION per le singole opzioni tag OPTGROUP per raggruppare opzioni (menù a cascata; un solo livello di raggruppamento) attributo LABEL (vince rispetto al testo del tag) attributo VALUE (se manca, valore uguale testo) <select name=...> <option label=... > <option label=... value=... > <option>... </option> <option value=... >... </option> </select> Form: opzioni dei menù attributo SELECTED (su OPTION) per opzione preselezionata default: dipende dallo UA attributo MULTIPLE (su SELECT) per indicare che sono possibili scelte multiple default: scelta singola meglio checkbox per non confondere l'utente (scelta singola o multipla? come selezionare più scelte?) <select multiple name=...> <option label=... > <option>... </option> <option selected>... </option> </select> Form: controlli a scelta multipla CHECKBOX un elemento di tipo on/off indipendente da altri controlli dello stesso tipo inviati al server tutti quelli selezionati (CHECKED) potrebbe anche non inviare niente al server RADIO un insieme di elementi di tipo on/off identificati dallo stesso NAME (in questo caso NON si può usare ID perché il nome non è unico ma comune) mutuamente esclusivi (selezionabili uno solo) inviato al server il valore dell unico elemento selezionato (CHECKED) A.Lioy - Politecnico di Torino (2003-2017) M-3

Esempio di form (checkbox) <form action="/cgi/query" method="get"> <p> Compose your own fruit salad: <input type="checkbox" id="banana"> Banana <input type="checkbox" id="apple" checked> Apple <input type="checkbox" id="orange"> Orange (red) <input type="submit"> <input type="reset"> Si noti: id diverso per ogni pulsante pulsante pre-selezionato (checked) Esempio di form (radio) <form name="f" action="/cgi/query" method="get"> <p> Select your preferred fruit: <input type="radio" name="frt" value="banana"> Banana <input type="radio" name="frt" value="apple" checked> Apple <input type="radio" name="frt" value="orange"> Orange (red) <input type="submit"> <input type="reset"> Si noti: stesso name per i tre pulsanti valore di default (checked) Controlli disabilitati o a sola lettura attributo readonly non permette all utente di cambiare il valore di un controllo (possibile solo tramite script client-side) valido nei controlli INPUT e TEXTAREA attributo disabled disabilita un controllo l utente non può cambiarne il valore non verrà inviato al server valido nei controlli INPUT, TEXTAREA, BUTTON, SELECT, OPTION, OPTGROUP attributi Booleani, impostati in HTML e cambiabili da script client-side Uso di script per validare un form si usa il modello degli eventi DOM per attivare uno script lato client tipicamente si associa uno script all'evento onsubmit: script eseguito quando si preme il pulsante Submit se lo script restituisce il valore "true" allora i dati del form vengono inviati al server, altrimenti no possibile associare script ad altri eventi (es. onchange) per validare singoli controlli non appena vengono introdotti dei dati Esempio di script per validare un form Script di validazione <form name="sample" method="post" action="..." onsubmit="return validateform()"> <p> Nome: <input type="text" name="nome" size="30"> Età: <input type="text" name="eta" size="3"> Data di nascita: <input type="text" name="nascita" size="10"> <input type="submit"> <input type="reset"> <script type="text/javascript"> function validateform() { formobj = document.sample; if (formobj.nome.value == "") { alert("non hai introdotto il nome!"); return false; else if (formobj.eta.value == "") { alert("non hai introdotto l'eta!"); return false; else if... return false; return true; </script> 24 A.Lioy - Politecnico di Torino (2003-2017) M-4

Come fare la validazione? controllare che il valore associato ad un controllo: non sia vuoto (se è un caso possibile dato il tipo) abbia un valore corretto ("looks good") piuttosto che non abbia un valore sbagliato ("doesn't look bad") esempio (validazione del valore di un controllo di testo usato per introdurre un CAP): contenga solo caratteri numerici ('0' '9') sia composto esattamente da cinque caratteri (opzionale) se è noto l'elenco di tutti i possibili CAP controllare che il valore fornito sia uno di questi in caso di errore, fornire un avviso all'utente che lo aiuti a correggere l'errore (ossia NON "CAP errato") nuovi tag: datalist keygen output Form: nuovi elementi HTML5 label, fieldset, legend nuovi input type: color date, datetime-local, month, week, time email, tel, url number, range search Form: output un campo per mostrare il risultato di un'operazione "name" indica la variabile associata al risultato (informativo) "for" indica i parametri (informativo) "form" indica il form associato il valore NON viene trasmesso come parte del form <form oninput= "x.value = a.valueasnumber + b.valueasnumber"> <input type="number" name="a"> + <input type="number" name="b"> = <output name="x" for="a b"/> output.html Form: fieldset e legend <fieldset> raggruppa più campi di un form <legend> aggiunge un titolo ad un fieldset <form...> <fieldset> <legend>dati personali</legend> Nome: <input type="text" name="nome"> Cognome: <input type="text" name="cognome"> Data di nascita: <input type="date" name="data"> </fieldset> dati_personali.html JS validation API JS ha metodi e proprietà specifiche per controllare la validità di un oggetto di tipo INPUT metodi: checkvalidity() restituisce true se il campo di input contiene un valore valido, false altrimenti setcustomvalidity( msg ) imposta un messaggio di errore specifico quando un determinato input non è valido proprietà: validity JS validation API proprietà Booleane circa la validità di un input valid, patternmismatch, rangeoverflow, rangeunderflow, stepmismatch, toolong, typemismatch, valuemissing, customerror validationmessage messaggio mostrato se l'input fornito non è valido willvalidate indica se un input è soggetto a validazione A.Lioy - Politecnico di Torino (2003-2017) M-5

JS validation API: esempio (I) <head> <script> function validazione (inputid, msgid) { var inputobj = document.getelementbyid(inputid); var msgobj = document.getelementbyid(msgid); if (! inputobj.checkvalidity() ) msgobj.innerhtml = inputobj.validationmessage; else msgobj.innerhtml = "OK"; </script> </head> 32 <body> JS validation API: esempio (II) <h1>controllo validità di un numero</h1> <!-- fare test con 0, 100, 2, 1, -1, 101, due --> <p>numero pari (0-100)? <input id="num" type="number" min="0" max="100" step="2" required> <input type="button" value="verifica" onclick="validazione('num','errmsg')"> <span id="errmsg"></span> </body> 33 checknumber.html Trasmissione parametri di un form (GET) URI = concatenazione del campo action con? e quindi i parametri espressi nella codifica application/x-www-form-urlencoded il body HTTP della richiesta rimane vuoto application/x-www-form-urlencoded è la codifica di default usabile sia con GET sia con POST genera una stringa composta dai nomi dei controlli del form seguiti da "=" e dai valori inseriti: nome_ctrl1=val_ctrl1&nome_ctrl2=val_ctrl2& separatore tra un controllo ed il successivo: & spazi nei nomi o nei valori sostituiti da "+" caratteri speciali, non US-ASCII o con significato particolare ( /? ) sostituiti con %xx (ove "xx" è il numero esadecimale del suo codice ISO-8859-1) Es. x-www-form-urlencoded: form <form name="sample" method="get" action="/cgi/acquisisci"> Nome e cognome: <input type="text" name="cognome" size="30"> Numero di figli: <input type="text" name="figli" size="3"> Data di nascita: <input type="text" name="nascita" size="10"> <input type="submit"> <input type="reset"> Es. x-www-form-urlencoded: trasmissione se il precedente form venisse riempito dal signor Marco Noè, nato il 30/10/74, genitore di 3 figli allora verrebbe creata la seguente stringa: cognome=marco+no%e8&figli=3&nascita=30%2f10%2f74 A.Lioy - Politecnico di Torino (2003-2017) M-6

Trasmissione parametri di un form (POST) URI coincide col valore del campo action (default, ovvero enctype non specificato) Content-Type: application/x-www-form-urlencoded Content-Length: body contiene solo la stringa dei parametri nella forma application/x-www-form-urlencoded con enctype=multipart/form-data Content-Type: multipart/form-data Content-Length: body = messaggio MIME multipart (una sezione per ogni parametro) nota: obbligatorio per controlli di tipo File Esempio invio dati con GET: il form <form method="get" action="/cgi/insaula"> <table border="0"> <td>numero aula:</td> <td><input type="text" size="8" name="num"></td> <td>sede:</td> <td><input type="text" size="15" name="sede"></td> <td> <input type="submit" value="invia"> <input type="reset" value="cancella"> </td> </table> Esempio invio dati con GET: URI, HTTP, env http://localhost/cgi/insaula?num=12a&sede=sede+centrale canale HTTP (C > S) GET /cgi/insaula?num=12a&sede=sede+centrale HTTP/1.1 Accept: image/gif, image/x-xbitmap,image/jpeg,*/* Referrer: http://localhost/pad/formaula.html Accept-Language: it Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible;msie 6.0;Windows NT 5.0) Host: 192.168.235.10 Connection: Keep-Alive num=12a&sede=sede+centrale URI QUERY_STRING Invio dati con POST (caso 1): il form <form method="post" action="/cgi/insaula"> <table border="0"> <td>numero aula:</td> <td><input type="text" size="8" name="num"></td> <td>sede:</td> <td><input type="text" size="15" name="sede"></td> <td> <input type="submit" value="invia"> <input type="reset" value="cancella"> </td> </table> Invio dati con POST (caso 1): URI, HTTP, env http://localhost/cgi/insaula canale HTTP (C > S) POST /cgi/insaula HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, */* Referrer: http://localhost/pad/formaula.html Accept-Language: it Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible;msie 6.0;Windows NT 5.0) Host: 192.168.235.10 Connection: Keep-Alive Content-Type: application/x-www-form-urlencoded Content-Length: 26 num=12a&sede=sede+centrale URI QUERY_STRING Invio dati con POST (caso 2): il form <form method="post" action="/cgi/insaula enctype="multipart/form-data"> <table border="0"> <td>numero aula:</td> <td><input type="text" size="8" name="num"></td> <td>sede:</td> <td><input type="text" size="15" name="sede"></td> <td> <input type="submit" value="invia"> <input type="reset" value="cancella"> </td> </table> A.Lioy - Politecnico di Torino (2003-2017) M-7

Invio dati con POST (caso 2): URI, HTTP, env http://localhost/cgi/insaula canale HTTP (C > S) POST /cgi/insaula HTTP/1.1 Content-Type: multipart/form-data; boundary=aabbcc Content-Length: 145 --AaBbCc Content-Disposition: form-data; name="num" URI Attenzione ai campi vuoti! ad eccezione dei controlli SELECT e RADIO tutti gli altri campi di un form possono non trasmettere input ed in un caso (TYPE=CHECKBOX) può anche non essere presente la variabile relativa al campo (se è OFF) le applicazioni che ricevono input da un form devono saper trattare tutti i casi 12A --AaBbCc Content-Disposition: form-data; name="sede" Sede Centrale --AaBbCc-- N.B. valore non codificato Esempio 1 <form name="sample" method="get" action="http://www.negozio.it/pagamento.asp"> Carta di credito: <input type="text" name="cardno" size="16"> MasterCard <input type="radio" name="cc" value="mastercard"> Visa <input type="radio" name="cc" value="visacard"> <input type="submit"> <input type="reset"> Esempio 2: il form <form name="sample" method="get" action="http://www.amici.it/persona.asp"> cognome: <input type="text" name="cogn" size="30"> hobby: <ul> <li>pesca <input type="checkbox" name="cb_pesca"> <li>sci <input type="checkbox" name="cb_sci"> </ul> <input type="submit"> <input type="reset"> cardno=123456789012345&cc=mastercard Esempio 2: dati trasmessi al server L applicazione lato server deve gestire questi casi (ed altre combinazioni ) cogn= cogn=de+chirico cogn=de+chirico&cb_pesca=on cogn=de+chirico&cb_pesca=on&cb_sci=on Form: file upload il controllo <input type="file" > inserisce un elemento per la selezione del nome di un file la forma esatta del controllo dipende dal browser ma spesso: campo di testo per inserire direttamente il nome pulsante per attivare interfaccia grafica (navigazione del file system locale e selezione del file) tutti i dati del form sono trasmessi singolarmente come parti di un messaggio MIME usabile solo con POST e tipo MIME specifico: <form action=... enctype="multipart/form-data" method="post"> A.Lioy - Politecnico di Torino (2003-2017) M-8

Esempio di form (file upload) <form action="/cgi/fileprint" enctype="multipart/form-data" method="post"> File da stampare: <input type="file" name="myfile"> Numero di copie da stampare: <input type="text" name="ncopie" size="2"> <input type="submit" value="submit"> File upload trasferimento C > S POST /cgi/fileprint HTTP/1.1 Host: server.it Content-Type: multipart/form-data; boundary=aabb Content-Length: 199 --AaBb Content-Disposition: form-data; name="myfile"; filename="orario.txt" Content-Type: text/plain 8:30-12:30 aula 12 --AaBb Content-Disposition: form-data; name="ncopie" 3 --AaBb-- Form: meglio trasmissione con GET o POST? GET: permette di fare caching della pagina di risposta permette di creare bookmark e link alla pagina lascia traccia del valore dei parametri nel log del server (problema di privacy e/o sicurezza) alcuni server limitano la lunghezza della query string a 256 caratteri se è all interno della URI semplifica il debug dei form POST: non permette caching e bookmarking non lascia traccia nel log non pone limiti alla query string A.Lioy - Politecnico di Torino (2003-2017) M-9