<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.
ISINDEX
``in azione'' in alcune pagine di interfaccia verso
programmi di ricerca:
http://alpha.sci.unitn.it/cgi-bin/archie
http://genio.sns.it/WAIS
http://www.utirc.utoronto.ca/cgi-bin/srch-example
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
.
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: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)
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
This is a case-insensitive substring search: thus searching for 'ian' will find 'Ian' and Adriana'.
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
.
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
... risultati di grep -i "ian" /u/www/Webdocs/Personnel