Come si scrive un CGI?
Come ho accennato nelle prime lezioni, un programma CGI è un normalissimo
programma eseguibile o script come tutti gli altri. Ciò che distingue
i CGI è lambiente in cui girano, che è creato dal server
web.
La scelta del linguaggio è comunque importante, perché occorre che
il vostro programma possa girare sul server che vi fornisce lo spazio
web. E scoprirete che i programmi compilati hanno vita dura: potreste
anche essere un mago col Visual C++, ma se il vostro server non
vi permette di far girare gli eseguibili, sarà inutile.
La maggior parte dei server vieta i CGI compilati, mentre permette
una qualche forma di CGI interpretato, in genere scritto in Perl.
Il fatto è che il Perl e' probabilmente il linguaggio più adatto
allo scopo, grazie alla sua affinità con la manipolazione di stringhe.
Perciò in questo corso userò quasi esclusivamente script Perl.
Se volete usare altri linguaggi, potete farlo. Vi basterà ricordare
queste due regole:
- le richieste dellutente arrivano dallo standard input oppure
dalla variabile dambiente QUERY_STRING;
- la pagina di risposta deve essere inviata allo standard output,
completa di header MIME.
Se queste istruzioni vi confondono, non preoccupatevi. Le spiegheremo
in dettaglio in seguito.
Un "Hello, World" CGI
Il primo programma da scrivere si chiama, comè ovvio, "Hello
World". Vediamo la versione Perl:
#!/usr/bin/perl
print Content-type: text/html\n\n;
print <html><body>Hello, world!</body></html>n;
(la prima riga è obbligatoria solo per gli utenti Linux/Unix, se
usate Windows potete tralasciarla)
ed ecco lequivalente C:
#include <stdio.h>
void main()
{
printf (Content-type: text/html\n\n);
printf (<html><body>Hello, world!</body></html>n);
}
Cè poca differenza... Entrambi scrivono prima lheader
MIME, e poi una pagina HTML di una riga. Vedremo in seguito cosa
sono gli header e quali regole seguire per scriverli, per ora non
ci importa. Quello che ci importa è di vedere se il nostro PC fa
girare correttamente i programmi CGI. Perciò piazzate lo script
nella directory cgi-bin di Apache (nel caso del C, dovrete
metterci l'eseguibile compilato), e fate partire il vostro browser
preferito (Explorer, Netscape o altro non fa differenza).
Cercate ora di accedere a questo indirizzo:
http://localhost/cgi-bin/hello.pl
mettendo al posto di hello.pl il nome esatto che avete
dato allo script o alleseguibile. Prima che me lo chiediate...
se non ci sono spazi nel nome e' meglio. Dovreste vedere una pagina
con un semplice Hello, world! in cima allo schermo.
Se la vedete, complimenti! Siete pronti ad entrare nel mondo CGI,
e potete saltare alla prossima lezione.
Se non vedete nulla, oppure avete un errore 404 o 500, qualcosa
è andato storto. Potrebbe essere uno qualunque di questi motivi:
- Apache configurato male: apache deve sapere che i CGI stanno
in cgi-bin (e lo sa per default, quando lo installate).
Inoltre deve essere al corrente dellassociazione tra .pl
e interprete Perl (avete messo ScriptInterpeterSource?). Il poderoso
manuale Apache lo trovate allindirizzo http://localhost, oppure http://127.0.0.1. Se non vedete neppure
quello, linstallazione di Apache non è riuscita.
- Se state usando Linux, avete messo il path corretto per linterprete
Perl nella prima riga dello script? Potete sapere qual è il path
da inserire con il comando which perl.
- Se avete un errore 404 File not Found, allora avete
sbagliato qualcosa nel copiare lo script/eseguibile o nel richiamarlo
nella barra degli indirizzi.
- Se avete un errore 500, la cosa più probabile è un errore di sintassi
nello script. Provate ad eseguirlo da una finestra DOS. Funziona
bene? Scrive quello che deve scrivere?
- Avete ricopiato esattamente lheader? Non è ammesso il più
piccolo errore, neppure uno spazio in più o in meno. Inoltre, dopo
lheader ci devono essere due ritorni a capo.
- Avete scritto bene il codice html? Provate a guardare il sorgente
della pagina, per vedere se per caso il CGI ha funzionato, ma non
vedete nulla a causa di un errore nel codice HTML inserito nel programma.
Insomma, avete di che divertirvi. Non passate alle prossime lezioni
finché non avrete risolto questo problema, perché dora in
poi assumerò che tutto funzioni a dovere.
Torna all'indice Generale del corso di Corso di CGI di Software Planet