Questa lezione si occuperà dello strumento che costituisce la parte, per così dire,
"interattiva" di HTML: i form.
Accenno al funzionamento dei CGI.
CGI (Common Gateway Interface) è il primo standard adottato per l'esecuzione dei programmi nel server.
I primi documenti HTML erano infatti statici, ossia se due utenti richiedevano lo stesso documento
in tempi diversi ottenevano esattamente lo stesso file. Il risultato non dipendeva né
dall'utente né dal tempo, da qui il nome statico.
Invece, supponiamo di volere che il server ci restituisca una pagina diversa a seconda
della nostra richiesta; questo è quanto accade quando usiamo i motori di ricerca: le pagine
che il server ci spedisce dipendono dalla stringa di ricerca ed altre poche opzioni che
abbiamo impostato prima di premere il bottone di "Invio". Da questo il nome di web dinamico,
queste pagine vengono generate al volo da una applicazione che risiede nel server
(on the fly) e non c'è nessun programmatore che le scrive (né uno che le potrebbe
scrivere così velocemente!).
Le pagine vengono dunque generate da una applicazione che risiede nel server (questa applicazione
viene detta cgi): quando il server riceve il comando dal browser richiama una applicazione
(che dobbiamo specificare noi) la quale, in base ai dati che inviamo,
esegue una elaborazione (ad esempio una lettura o una scrittura su un database o nel
file system) per poi produrre una pagina HTML contenente i risultati; il server non fa altro
che prendere questa pagina e rispedirla al mittente.
Rassegna degli strumenti FORM di HTML
Gli strumenti che HTML mette a disposizione per l'interattività permettono di spedire
al server stringhe, valori numerici e file.
FORM
Il tag FORM è fondamentale e tutti i tag che vedremo vanno racchiusi tra
i tag di FORM:
Questo tag definisce quale programma il server dovrà richiamare per l'elaborazione,
il modo in cui il browser spedirà i dati al server e una serie di altri dati:
action: specifica il nome del programma che dovrà essere eseguito
nel server al momento dell'azione del tasto di invio (submit). Il programma
risiede in una directory "virtuale" cgi-bin all'interno del quale si trovano
le applicazioni che ci servono. Il web server avrà avuto dall'amministratore del
web indicazioni sulla effetiva locazione di tali programmi nel file system del
server e sui diritti di esecuzione dei programmi che si trovano all'interno
di tale directory. Il nome "virtuale" è dovuto al fatto che il web server utilizza
un alias che mappa una directory effettiva del server; tale directory virtuale
non corrisponde di nome (necessariamente) ad una directory reale. Ad esempio,
in ambiente Linux, il webserver (presumibilmente Apache) può essere ad esempio
istruito a riconoscre come cgi-bin la directory /etc/bin.
Le applicazioni CGI possono essere nelle forme più svariate:
script di un linguaggio interpretato (ad es. Perl o Python); in tal caso
è necessario che il sistema operativo, nel momento in cui viene richiamato
lo script, avvii automaticamente l'interprete di quel linguaggio.
un programma già in forma eseguibile (ad es. un compilato C). In questo caso
il sistema operativo carica in memoria il programma, gli passa gli argomenti
e lo esegue.
method: il metodo istruisce il server su come esso deve aspettarsi
gli argomenti da passare al programma CGI. Vi sono due metodi possibili:
GET: secondo questo metodo, il client passa al server i dati
concatenandoli in una query string che viene salvata in una variabile d'ambiente
(QUERY_STRING, appunto) e starà poi al CGI eseguire il parsing per estrarre i dati.
La caratteristica principale è la limitazione dei dati trasferibili che sono
limitati dalla lunghezza massima della query string. Come caratteristica
"visiva", quando si usa il metodo GET si possono vedere le coppie
nome/valore sulla query string nella barra di indirizzi del browser
(vedremo degli esempi).
POST: in questo metodo il passaggio dei dati da client a server
avviene come uno stream nello standard input (come se il CGI ricevesse i
dati da linea di comando) per cui a essere processato è lo standard input anziché
la query string. Il CGI riceverà le coppie nome/valore con un array del tipo
C (*argv[], argc). La caratteristica più importante è che se usiamo il metodo
POST non c'è alcun limite alla quantità di dati trasferibili da form al server.
Visivamente, non vedremo i dati sulla barra degli indirizzi.
name, id: è il nome dell'oggetto
form a cui ci si deve riferire per esempio negli script lato client.
enctype:imposta il tipo MIME con la quale devono essere codificate
le coppie nome/valore quando viene inviato il form. Il valore assunto per
default è "application/z-www-form-urlencoded", ma si può
usare anche il tipo "multi-part/form-data" (che è necessario per la gestione
dei file).
INPUT
I tag di tipo input sono molteplici e consentono l'immissione
dei dati da parte dell'utente e la decisione da parte dello stesso di che tipo di azione
intraprendere. Ogni oggetto del form viene riferito come campo.
La sintassi generale per un tag INPUT è la seguente:
name: il nome della variabile associata a questo campo;
è arbitrario.
value: il valore associato alla variabile di nome NAME
type: il tipo di input. Vi sono diversi tipi di input:
Copyright @ 2000-2017 Marco Barbato htttp://www.betaingegneria.it