Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Siti interattivi e dinamici in poche pagine… 1 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Siti Web interattivi Pagine Web codificate esclusivamente per mezzo dell’HTML non permettono alcun tipo di interazione con l’utente, se non quella rappresentata dal clic sui link (con relativo caricamento dei file corrispondenti). L’utente può eventualmente compilare dei form, ma i dati inseriti non potranno essere elaborati in alcun modo. Si supponga invece di voler controllare che in un certo campo di un form sia effettivamente stato inserito qualcosa, o di voler verificare che questo “qualcosa” sia un numero, mostrando un messaggio di errore in caso contrario: in una situazione di questo tipo entra in gioco un comportamento interattivo, ossia vengono eseguite certe “azioni” (viene mostrato un messaggio di errore) solo se si verifica un evento particolare (viene inserito un dato scorretto nel campo del form). Altri esempi di interattività potrebbero essere rappresentati da una pagina che viene mostrata dopo che i dati di un form sono stati inviati al server e il cui contenuto dipende proprio da tali dati, oppure da un’immagine che cambia quando il cursore del mouse le passa sopra: anche in questi casi, il verificarsi di determinati eventi provoca corrispondenti effetti. 2 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Interazione lato client Quando il comportamento interattivo della pagina è definito da codice che viene eseguito sulla macchina dell’utente, si parla di interazione lato client. Coi fogli di stile, ad esempio, usando le pseudoclassi A:hover e A:active, è possibile fare in modo che un link cambi di aspetto quando il cursore del mouse gli è sopra o viene cliccato: per quanto semplice, anche questo è un comportamento interattivo. Le applet Java e i controlli ActiveX possono essere progettati per realizzare qualunque comportamento, ed essendo eseguiti in locale sulla macchina dell’utente fanno anch’essi parte delle tecnologie lato client. Analogamente, Adobe Flash permette non solo di realizzare animazioni vettoriali, ma anche di associare comportamenti interattivi agli elementi grafici (con del codice di programmazione opportuno): i siti realizzati in Flash utilizzano questo principio per creare, ad esempio, i link. Le applet Java, i controlli ActiveX e le animazioni Flash interattive hanno in comune il fatto di essere definiti esternamente al codice HTML (vengono solo caricati); ci sono però tecnologie basate su linguaggi che si integrano con l’HTML e vengono interpretati dal browser: la più famosa di queste è JavaScript. 3 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies JavaScript JavaScript (da non confondere con Java) è un linguaggio di scripting che si integra con l’HTML e può essere utilizzato per creare comportamenti interattivi nelle pagine Web. Come esempio, la figura seguente mostra il codice HTML e JavaScript che definisce una pagina contenente un form con un campo di input e un bottone; quando l’utente clicca sul bottone, se la casella di testo è vuota (non contiene cioè nessun carattere o solo spazi) viene visualizzato un messaggio di errore, altrimenti la stringa inserita viene inviata al server. 4 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Nell’esempio viene definita una funzione JavaScript (posta nella sezione HEAD dentro il tag SCRIPT) che è poi chiamata dentro il form dal codice (sempre JavaScript) che viene eseguito in risposta alla pressione del bottone. onClick è un event handler, ossia un attributo che specifica “cosa deve essere fatto” quando il bottone viene premuto (in questo caso, deve essere eseguito il codice indicato). Le funzioni JavaScript possono anche essere poste in un file esterno e caricate per mezzo dell’attributo src, sempre del tag SCRIPT; in tal modo pagine diverse possono sfruttare le stesse funzioni. Nota: JavaScript è un linguaggio “basato sugli oggetti”, nel senso che tutti gli elementi che compongono la pagina vengono visti come “oggetti” legati da relazioni gerarchiche. Dal punto di vista pratico, nel linguaggio tali relazioni vengono esplicitate attraverso una “notazione puntata”: con riferimento all’esempio della figura, document.f.username.value indica il valore del campo il cui nome è username, del form che si chiama f del documento corrente (document). document, f e username sono oggetti, contenuti uno nell’altro, che compongono la pagina. Ogni oggetto (e anche le variabili sono ritenute tali) può avere associati degli attributi (cioè delle proprietà) e dei metodi (cioè delle funzioni direttamente legate agli aggetti): nell’esempio, length e value sono attributi, mentre charAt e submit sono metodi. Oltre agli oggetti predefiniti, l’utente può creare oggetti propri, con relativi attributi e metodi. Dal punto di vista sintattico, JavaScript è molto simile a Java (da cui il nome), anche se, essendo un linguaggio di scripting, introduce diverse semplificazioni rispetto ad esso. 5 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies DHTML Il DHTML non è un nuovo HTML, ma semplicemente l’unione di HTML, fogli di stile e JavaScript. Attraverso JavaScript è infatti possibile agire dinamicamente sugli stili della pagina e modificarne quindi l’aspetto “al volo”. Ad esempio, il codice mostrato nella figura seguente fa in modo che quando il cursore del mouse sale sopra l’immagine il colore di sfondo della pagina cambi da bianco a rosso. Gli event handler onMouseOver e onMouseOut vengono invocati, rispettivamente, quando il cursore del mouse sale sull’immagine e quando esce da essa. Il valore assegnato alla proprietà background dell’oggetto style determina il colore di sfondo. Va osservato che JavaScript non serve solo per creare comportamenti interattivi: può infatti agire autonomamente sugli elementi della pagina, senza la necessità dell’intervento dell’utente. Ad esempio, potrebbe essere usato per temporizzare l’apparizione di una sequenza 6 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies di immagini (creando un effetto simile a quello delle GIF animate), oppure per scrivere o leggere cookie (file memorizzati sul client contenenti informazioni di vario tipo). Nota (DOM, linguaggi e cookie): l’insieme degli oggetti sui quali è possibile agire attraverso JavaScript, così come gli event handler che si possono usare per questo scopo, non fa parte del linguaggio JavaScript, ma del cosiddetto Document Object Model (DOM), che è specifico dei browser. Ciò, purtroppo, può portare a degli inconvenienti, in quanto alcuni oggetti ed event handler riconosciuti da un browser non lo sono da altri e viceversa… Oltre a JavaScript, i browser possono riconoscere anche altri linguaggi, eventualmente per mezzo di appositi plugin. Ad esempio, MS Explorer interpreta anche il linguaggio VBScript, sintatticamente diverso da JavaScript. I cookie sono piccoli file testuali (memorizzati sull’hard disk della macchina dell’utente per mezzo di codice JavaScript) che di solito sono usati dai siti Web per scopi statistici (e in genere non costituiscono quindi un problema per la sicurezza del client o per la privacy). Ad esempio, possono essere usati per controllare quante volte un utente accede ad un sito, o per memorizzare informazioni relative al navigatore (il suo nome, le sue preferenze, ecc.). 7 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Interazione lato server – Implementazione di siti dinamici Quando si compilano i campi di un form, i dati inseriti vengono di solito inviati al server, dove sono elaborati in qualche modo da un programma o da una pagina “speciale” indicati come valore dell’attributo action del tag FORM. L’utente potrebbe quindi ad esempio ricevere una pagina di risposta il cui contenuto non è staticamente definito, ma dipende proprio dai dati che aveva inserito nel modulo. Analogamente, si pensi ai molti siti il cui contenuto proviene da database: anche in questo caso i dati non sono memorizzati in file HTML predefiniti, ma sono generati “al volo” quando servono (quando devono cioè essere inviati all’utente). Comportamenti come quelli descritti fanno parte delle cosiddette interazioni lato server, dato che implicano l’intervento attivo del server. In particolare, quando entra in gioco la non staticità del contenuto, generato “on demand”, si parla di siti dinamici. Le due principali tecnologie per la creazione di interazioni lato server e siti dinamici sono i programmi CGI e gli application server. 8 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Programmi CGI La tecnologia CGI (Common Gateway Interface) permette di interfacciare macchine client con macchine server, per mezzo di programmi CGI. Un programma CGI viene eseguito sul server (dove è memorizzato in una directory particolare, che in genere si chiama cgi-bin) e può essere scritto utilizzando qualunque linguaggio, sia interpretato che compilato. Solitamente, sono preferiti linguaggi di scripting interpretati, più semplici da gestire, quali il Perl e il Tcl. L’utilizzo tipico dei programmi CGI è l’elaborazione dei dati inseriti nei form (ad esempio la loro memorizzazione in file o database) e la generazione di contenuto dinamico, che viene inviato al client e visualizzato dal browser. Il codice HTML seguente, ad esempio, inizia la definizione di un form i cui dati saranno inviati al programma Tcl elabora.tcl (utilizzando il metodo get): <FORM name=”f” method=”get” action=”/cgi-bin/elabora.tcl”> Basandosi completamente su codice di programmazione, la tecnologia CGI può risultare piuttosto complessa per chi non ha specifiche competenze informatiche; ecco perché le viene spesso preferito l’approccio degli application server. 9 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Application server La tecnologia degli application server permette di elaborare dati ricevuti dai form e di generare pagine dinamiche, un po’ come avviene con i programmi CGI. Un application server è software aggiuntivo che viene installato su una macchina server (in genere quella che ospita il Web server) ed è in grado di interpretare ed eseguire codice di programmazione scritto in un linguaggio specifico; gli application server più diffusi sono ASP e PHP. A differenza dei programmi CGI, il codice di programmazione degli application server può essere integrato direttamente nell’HTML, cosa che risulta particolarmente comoda per la generazione di pagine di risposta all’utente. Alcune funzionalità sono inoltre più semplici da implementare, come l’interazione con i database. Il seguente esempio mostra l’invio dei dati di un form a una pagina PHP. I dati del form della schermata superiore vengono inviati al file result.php, che, dopo avere eseguito il codice PHP in esso contenuto (in rosso), genera la risposta mostrata nella schermata inferiore. È da notare che la pagina ricevuta dal client non contiene codice PHP, ma solo codice HTML (il risultato dell’elaborazione sul server). 10 Siti interattivi e dinamici Marco Porta – CIM: Web Design & Technologies Nota: ASP è tipicamente diffuso sui server Windows, mentre il PHP è più comune sui server Linux e Unix (anche se se ne esistono versioni per Windows). Altri application server relativamente diffusi sono JSP (basato su Java) e ColdFusion; pur essendo il più semplice dei quattro (adatto anche ai “non informatici”), quest’ultimo è l’unico a non essere gratuito. 11