Corso di CGI

Il primo programma CGI

 

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 è l’ambiente 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 dell’utente arrivano dallo standard input oppure dalla variabile d’ambiente 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 l’equivalente 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 l’header 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 all’eseguibile. 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 dell’associazione tra “.pl” e interprete Perl (avete messo ScriptInterpeterSource?). Il poderoso manuale Apache lo trovate all’indirizzo http://localhost, oppure http://127.0.0.1. Se non vedete neppure quello, l’installazione di Apache non è riuscita.
- Se state usando Linux, avete messo il path corretto per l’interprete 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 l’header? Non è ammesso il più piccolo errore, neppure uno spazio in più o in meno. Inoltre, dopo l’header 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é d’ora in poi assumerò che tutto funzioni a dovere.

 

Torna all'indice Generale del corso di Corso di CGI di Software Planet