[Sommario di HTML] [Introduzione ad HTML]

ISINDEX

Sintassi: <ISINDEX>

Questa indicazione specifica che la pagina e` una facciata per l'utilizzo di un programma remoto; il programma di consultazione visualizzera` percio` una riga per l'immissione di dati da parte dell'utente, per poi passarli come parametri per l'elaborazione al programma remoto. Cio` viene fatto accedendo allo stesso URL con aggiunto in fondo un ? e dei parametri separati da + (per esempio: http://alpha.sci.unitn.it/cgi-bin/archie?telnet) - in risposta si ottiene una pagina contenente il risultato dell'elaborazione di questi parametri: la dichiarazione <ISINDEX> di una pagina serve appunto ad abilitare l'accesso a questi URL - altrimenti irregolari - ed a dare istruzioni al programma di consultazione perche` aggiunga in fondo alla pagina una riga per l'immissione di dati da parte dell'utente, e componga automaticamente l'elenco dei parametri in base a questi.

L'indicazione ISINDEX e` in genere inserita nelle pagine generate automaticamente da qualche programma remoto interfacciato col Server HTTP, e non e` sensato inserirla manualmente in una pagina: poiche` infatti questa indicazione permette di inoltrare dati da parte dell'utente verso il Server HTTP, deve esserci poi un programma remoto in grado di gestire questi dati, altrimenti poiche` viene abilitato l'accesso a URL del tipo http://server /cgi-bin/programma?parametri si potrebbe avere come risultato un errore di accesso ad URL inesistente (per esempio dalla pagina http://www.orto.it/broccoli.html si potrebbe cercare http://www.orto.it/broccoli.html?maturi) - per la stessa ragione le pagine che contengono i risultati dell'elaborazione dei dati da parte del programma remoto non devono piu` contenere l'indicazione ISINDEX. (altrimenti poiche` il loro URL e` per esempio http://www.paperino.it/cgi-bin/ricerca.pl?qui+quo+qua si potrebbe poi accedere all'URL http://www.paperino.it/cgi-bin/ricerca.pl?qui+quo+qua?paperone che e` irregolare.)

Piu` recentemente e` stata sviluppata l'indicazione FORM, che consente una maggiore flessibilita` nell'immissione dei dati (per esempio diversi spazi di immissione) ma e` in effetti piu` complicata da usare, e non e` ancora resa disponibile da tutti i programmi di consultazione.

Esempio

Poiche` l'esempio e` piuttosto lungo, puo` essere meglio vedere ISINDEX ``in azione'' in alcune pagine di interfaccia verso programmi di ricerca:
http://alpha.sci.unitn.it/cgi-bin/archie
Un programma per ricercare file, data una parte del nome, nelle banche dati accessibili via FTP anonimo;
http://genio.sns.it/WAIS
Un programma per ricercare parole chiave all'interno di una collezione di testi;
http://www.utirc.utoronto.ca/cgi-bin/srch-example
Il programma dell'esempio, discusso in dettaglio in seguito.

Esempio d'uso di ISINDEX

L'esempio e` stato preso da http://www.utirc.utoronto.ca/cgi-bin/srch-example, percio` il programmino di esempio non e` stato tradotto in italiano - perche`si possa esaminare il suo effettivo funzionamento ``in linea''.

Il programma deve permettere di ricercare nomi all'interno del file /u/www/Webdocs/Personnel (presente sul server http://www.utirc.utoronto.ca) per mezzo di un programma di consultazione WWW e di una pagina ISINDEX.

1. Istruzioni al Server

Il primo passo e` creare un file di istruzioni per permettere al server di comunicare correttamente col programma di ricerca - in questo caso grep, un programma che ricerca stringhe in un file e stampa le linee che le contengono. Il file di istruzioni si chiama srch-example e si trova nella directory cgi-bin del server: dunque vi si accede attraverso l'URL http://www.utirc.utoronto.ca/cgi-bin/srch-example. Questo file viene eseguito come un normale file di comandi del sistema, eccettuato il fatto che i risultati dell'elaborazione di ciascun comando sono inviati al server HTTP invece che al video. Il listato: #!/bin/sh echo Content-type: text/html echo if [ $# = 0 ] then echo "<HEAD>" echo "<TITLE>UTIRC Phonebook Search</TITLE>" echo "<ISINDEX>" echo "</HEAD>" echo "<BODY>" echo "<H1>UTIRC Phonebook Search</H1>" echo "Enter your search in the search field.<P>" echo "This is a case-insensitive substring search: thus" echo "searching for 'ian' will find 'Ian' and Adriana'." echo "</BODY>" else echo "<HEAD>" echo "<TITLE>Result of search for \"$*\".</TITLE>" echo "</HEAD>" echo "<BODY>" echo "<H1>Result of search for \"$*\".</H1>" echo "<PRE>" grep -i "$*" /u/www/Webdocs/Personnel echo "</PRE>" echo "</BODY>" fi

2. Come funziona?

Quando si accede all'URL http://www.utirc.utoronto.ca/cgi-bin/srch-example viene mandato in esecuzione il file di istruzioni, e tutto l'output di questo viene inviato al programma di consultazione, divenendo cosi` effettivamente la pagina HTML visualizzata; in particolare, la prima linea e` sempre ``Content-type: text/html'' - cio` significa che il resto del file e` appunto un documento HTML (e non, ad esempio, una immagine)

3. ISINDEX indica che e` possibile una ricerca

L'istruzione if controlla se sono stati passati parametri, cioe` se occorre effettuare una ricerca; quando non ve ne sono, al programma di consultazione viene inviata una pagina HTML contenente giusto il titolo, l'indicazione ISINDEX, e un breve testo di istruzioni su come effettuare una ricerca. Per esempio, al programma di consultazione arriva:
  <HEAD>
  <TITLE>UTIRC Phonebook Search</TITLE>
  <ISINDEX>
  </HEAD>
  <BODY>
  <H1>UTIRC Phonebook Search</H1>
  Enter your search in the search field.<P>
  This is a case-insensitive substring search: thus
  searching for 'ian' will find 'Ian' and Adriana'.
  </BODY>
che produce la pagina

UTIRC Phonebook Search

Enter your search in the search field.

This is a case-insensitive substring search: thus searching for 'ian' will find 'Ian' and Adriana'.


Il programma di consultazione allora mostra la pagina, e attende l'immissione dei dati da parte dell'utente. (per esempio Mosaic e Netscape presentano una casella da riempire, ed occorre premere <RETURN> appena finito.) Dopodiche`, il programma di consultazione accede allo stesso URL, ma vi postpone la stringa da ricercare, separata dal resto dell'URL da un punto interrogativo: tutto cio` che segue questo verra` passato come parametro al file di istruzioni srch-example e quindi infine al programma grep. Per esempio, se si riempie la casella con il nome ``Ian'', il programma di consultazione cerchera` nell'URL http://www.utirc.utoronto.ca/cgi-bin/srch-example?ian .

4. I risultati

Accedendo all'URL di sopra, si fa ripartire il file di istruzioni srch-example, ma questa volta con il parametro ian - viene dunque eseguita la parte di codice compresa tra le istruzioni else e fi; questa produce una nuova pagina, con intestazioni che indicano la stringa cercata, ed esegue il programma grep: l'output di questo va a riempire la pagina. ISINDEX non compare piu`, perche` questa pagina riporta dei risultati, e non indica la possibilita` di una ricerca! Nell'esempio, il documento HTML prodotto sarebbe:
  <HEAD>
  <TITLE>Result of search for "ian".</TITLE>
  </HEAD>
  <BODY>
  <H1>Result of search for "ian".</H1>
  <PRE>

  ... risultati di grep -i "ian" /u/www/Webdocs/Personnel

  </PRE>
  </BODY>
quindi otterremmo la pagina

Result of search for "ian".


  ... risultati di grep -i "ian" /u/www/Webdocs/Personnel