Sezioniamo il piu' semplice script: Salve Rete!

Questo e' uno script molto semplice:

#!/bin/sh

#Filename: Salve.sh.cgi
echo "Content-type: text/html"
echo

echo "<HTML><HEAD><TITLE>Salve Rete!</TITLE></HEAD>"

#HTML body

ECHO "<BODY><H1>Salve Rete!</H1></BODY></HTML>"

Spiegazione

Prima di tutto devi sapere che di solito uno script CGI:

  1. Legge dei dati in input (di solito tramite una form)
  2. Fa qualcosa
  3. Invia il risultato dell' elaborazione al client (il browser web)

Ok, ora vediamo la prima riga: #!/bin/sh

Il primo simbolo (#) e' un carattere speciale usato per definire una riga di commento, e l'interprete dello script non la eseguira'. Comunque questa e' una riga molto speciale, e devi scriverla all' interno di TUTTI gli script CGI. Se ometti questa riga, non potrai eseguire lo script. Infatti questa riga specifica al server web QUALE interprete deve usare e DOVE trovarlo. In questo esempio stai specificando che vuoi usare il linguaggio della Bourne Shell (scritto da Steve Bourne) tramite 'sh' e che l' interprete del linguaggio si trova nella directory: '/bin' (questa e' una directory speciale dove sono contenuti parecchi comandi Unix). Bene, ho appena detto che '#' definisce un commento. E' giusto, ma quando usi il simboloI '!' non e' piu' vero...Percio' tramite la riga '#!/bin/sh' stai dicendo: 'Ehi, server! Usa l' interprete della shell Bourne per eseguire questo script! Puoi trovarlo in /bin...'.

Bene, la seconda riga e' solo un commento, ma la terza riga:
echo "Content-type: text/html"

STAMPA la riga 'Content-type: text/html' sullo stdout (standard output). Stiamo parlando di sistemi Unix e qui c' e' un file speciale chiamato 'standard output' che di solito indica lo schermo. Beh, non e' proprio cosi', infatti un server web e' composto da: sistema operativo (di solito Unix), server web (un programma software) ed eventualmente alcuni script CGI. Lo script CGI stampa i dati sullo standard output (lo schermo sui sistemi Unix) ma il server web legge l' output dello script. Non devi necessariamente conoscere i dettagli del sistema operativo Unix per costruire un semplice script CGI, devi solo sapere che devi seguire alcune regole (infatti la CGI e' solo un insieme di regole...). Ad ogni modo lo script CGI dice al browser che sta per inviare un spemlice file di testo, e che quel file e' un documento HTML tramite l' intestazione Content-type (se non lo specifichi il browser web leggera' il file come un semplice file ASCII e tu non vedrai la pagina web). Ecco aluni cormati di file abbastanza comuni:

HTML text/html
Text text/plain
GIF image/gif
JPEG image(jpeg
PostScript application/postscript
MPEG video/mpeg

I formati specificate qui sopra sono chiamati anche tipi MIME. MIME sta per Multipurpose Internet Mail Extension e venne originariamente sviluppato per espandere le possibilita' offerte dal sistema di posta elettronica. Ci sono 3 tipi di intestazione: Content-type, Location e Status. A volte non hai la necessita' di dover scrivere delle pagine HTML 'al volo', perche' puoi inviare al browser web una pagina web scritta precedentemente. Cosi' puoi specificare al server web dove puo' trovare la pagina. In questo caso puoi usare l' intestazione 'location'. Per esempio:
'Location: ../pages/mypage.html'.
Ovviamente, se usi questa intestazione, non devi usare l' intestazione 'content-type'. A volte non devi inviare proprio nulla al browser, percio' puoi inviare una riga come questa: 'Status: 204 No Response'. In questo caso il browser web sapra' che non deve aspettarsi ulteriori risposte dal server.

La quarta riga e' necessaria per stampare un paio di caratteri newline. Questa e' una regola: dopo il content-type devi stampare 2 newline (echo stampa 1 newline, cosi' la riga precedente - la terza - scrive il primo newline, e questa riga - la quarta - stampa il secondo newline). Questo perche' il server web usa 2 newline per rilevare la fine dell' intestazione (che puo' essere content-type, location o status).

Infine ci sono i tag HTML che definiscono la pagina web che visualizza: Salve Rete!

Quello che segue e' lo stesso script scritto in PERL:

#!/usr/bin/perl
#Filename: salve.pl
print "Content-type: text/html"

#HTML body

ECHO "<BODY><H1>Salve Rete!</H1></BODY></HTML>"

<<<indietro Home CGI avanti >>>

Copyright © 1998-99 M. Silvestri