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

Documenti analoghi
I form HTML ed il web dinamico

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

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

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. Accesso ai dati di un form HTML

I form HTML ed il web dinamico

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

HTML Interazione con l utente

Programmazione Web D B M G. Il linguaggio HTML

D B M G Il linguaggio HTML

@2011 Politecnico di Torino 1

Modulo o Form in Html

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

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

I moduli HTML Interazione per l invio di informazioni in Internet

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 il linguaggio per creare le pagine per il web

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

@2011 Politecnico di Torino 1

04/05/2011. Lezione 6: Form

@2011 Politecnico di Torino 1

Programmazione Web D B M G. Il linguaggio HTML

HTML il linguaggio per creare le pagine per il web

Interazione con l utente : i moduli.

HTML e interattività FORM

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

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

HTML il linguaggio per creare le pagine per il web

HTML Settima lezione. 7 Aprile di Ivano Stranieri

HTML il linguaggio per creare le pagine per il web

LEZIONE 5. Introduzione a Javascript

Tito Flagella - Il protocollo HTTP

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

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

Strumenti a disposizione

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

Progettazione di siti web a.a. 2015/16

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

Sicurezza delle applicazioni web: protocollo HTTP

LE PRIME ACTIVE SERVICE PAGE: oggetto REQUEST

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

Linguaggi di scripting

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

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

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

HTML FORM E PHP. Programmazione Web 1

HTML Sintassi di HTML Tag principali per i contenuti I Forms

Dott.ssa Adriana Pietramala

PHP & MySQL. Giselda De Vita

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

Esercizi su JavaScript, DOM e Web Storage

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

Linguaggi di Programmazione per il Web Parte 7

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

ESEMPI DI FORM (da

Il Web come Interfaccia Utente di un Sistema Informativo

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

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

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

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

Lezione 6: Form 27/04/2012

Tecnologie di Sviluppo per il Web

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

PHP 3. Interazione browser server. PHP e EGPCS 2. PHP e EGPCS 1. Interazione con il browser

Array, Funzioni e interazione con l utente

Mantenimento dello stato

Esercizi su HTML5 e form

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

IL LIVELLO APPLICAZIONI WEB e HTTP

Laboratorio di Basi di Dati Web/MM

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

Per la creazione di un form utilizziamo l'omonimo tag form, come nell'esempio che segue:

Array, Funzioni e interazione con l utente

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

I Tag dell html. Parte quarta

Web Server; FORM; e prima Programmazione

IL LIVELLO APPLICAZIONI WEB e HTTP

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

Metodologie Informatiche Applicate al Turismo

Il linguaggio PHP. Elementi base

HTML. Es: La prossima parola è in <b>neretto</b> Es: La prossima parola è in neretto

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

MODULI E FORM. L'attributo enctype specifica il tipo di media utilizzato per codificare i dati del modulo, per default è di tipo MINE.

Basi di dati - Laboratorio

ISTITUTO ISTRUZIONE SUPERIORE "Q. Sella" BIELLA

Mantenimento dello stato

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

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

Transcript:

I form HTML ed il web dinamico Antonio Lioy < lioy@polito.it > Politecnico di Torino Dip. Automatica e Informatica Uso di form HTML per inviare dati nel web dinamico orario.html partenza arrivo from=torino&to=roma&day=31/03/07 data INVIA CANCELLA orario.asp orario.asp Torino Roma 6:50 8:00 7:45 8:55 browser <html>... </html> 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"...> A.Lioy - Politecnico di Torino (2003-2011) H-1

tag INPUT Form: controlli di input TYPE: text, password, checkbox, radio, image, file, hidden, submit, reset, button NAME: nome simbolico (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=...> Form: pulsanti SUBMIT 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 Form: controlli orientati al testo <input type=text size=n maxlength=m name= > zona di testo lunga N caratteri, al massimo M <input type=password > 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 A.Lioy - Politecnico di Torino (2003-2011) H-2

Esempio di form (text, password) <form action="/cgi-bin/query" method="get"> <p> your name: <input type="text" id="nome"> <br> your home page: <input type="text" id="home" value="http://"> <br> password: <input type="password" id="pswd"> <br> <input type="submit" value="ok"> <input type="reset" value="annulla"> </p> Form: controllo a scelta singola (menù) tag SELECT per racchiudere le varie opzioni tag OPTION per le singole opzioni, eventualmente con una scelta di default (SELECTED) tag OPTGROUP per raggruppare opzioni (menù a cascata; un solo livello di raggruppamento) preferire attributo LABEL <select 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-2011) H-3

Esempio di form (checkbox) <form action="/cgi-bin/query" method="get"> <p> Compose your own fruit salad: <br> <input type="checkbox" id="banana"> Banana <input type="checkbox" id="apple" checked> Apple <input type="checkbox" id="orange"> Orange (red) <br> <input type="submit"> <input type="reset"> </p> Si noti: id diverso per ogni pulsante pulsante pre-selezionato (checked) Esempio di form (radio) <form action="/cgi-bin/query" method="get"> <p> Select your preferred fruit: <input type="radio" name="frt" value="banana"> Banana <br> <input type="radio" name="frt" value="apple checked> Apple <br> <input type="radio" name="frt" value="orange"> Orange (red) <br> <input type="submit"> <input type="reset"> </p> 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 cambiabili da script client-side A.Lioy - Politecnico di Torino (2003-2011) H-4

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 alert(document.f1.frt.value) estrazione diretta dell elemento con ID unico alert( document.getelementbyid("frt").value ) 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 per validare singoli controlli non appena vengono introdotti dei dati Esempio di script per validare un form <form name="sample" method="post" action="..." onsubmit="return validateform()"> <p> Nome: <input type="text" name="nome" size="30"><br> Età: <input type="text" name="eta" size="3"><br> Data di nascita: <input type="text" name="nascita" size="10"><br> <input type="submit"> <input type="reset"> </p> A.Lioy - Politecnico di Torino (2003-2011) H-5

Script di validazione <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> 16 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") 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 A.Lioy - Politecnico di Torino (2003-2011) H-6

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 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-bin/acquisisci"> Nome e cognome: <input type="text" text name="cognome" size="30"><br> Numero di figli: <input type="text" name="figli" size="3"><br> Data di nascita: <input type="text" name="nascita" size="10"><br> <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-2011) H-7

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 (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 URI canale HTTP (C > S) GET /cgi/insaula?num=12a&sede=sede+centrale HTTP/1.1 Accept: image/gif, image/x-xbitmap,image/jpeg,*/* g /jp g, / 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 QUERY_STRING A.Lioy - Politecnico di Torino (2003-2011) H-8

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="txtsede"></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 URI 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: g 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&txtsede=sede+centrale 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="txtsede"></td> <td> <input type="submit" value="invia"> <input type="reset" value="cancella"> </td> </table> A.Lioy - Politecnico di Torino (2003-2011) H-9

Invio dati con POST (caso 2): URI, HTTP, env http://localhost/cgi/insaula URI canale HTTP (C > S) POST /cgi/insaula HTTP/1.1... Content-Type: multipart/form-data; boundary=aabbcc Content-Length: 148 --AaBbCc Content-Disposition: form-data; name="num" 12A --AaBbCc Content-Disposition: form-data; name="txtsede" Sede Centrale --AaBbCc-- N.B. valore non codificato Attenzione ai campi vuoti! ad eccezione del tag SELECT 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 lato server devono saper trattare tutti i casi Esempio 1 <form name="sample" method="get" action="http://www.negozio.it/pagamento.asp"> Carta di credito: <input type="text" name="cardno" size="16"> <br> MasterCard <input type="radio" name="cc" value="mastercard"> <br> Visa <input type="radio" name="cc" value="visacard"> <br> <input type="submit"> <input type="reset"> cardno=123456789012345&cc=mastercard A.Lioy - Politecnico di Torino (2003-2011) H-10

Esempio 2: il form <form name="sample" method="get" action="http://www.amici.it/persona.asp"> cognome: <input type="text" name="cogn" size="30"> <br> 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"> 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-2011) H-11

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"> <br><br> <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-2011) H-12