CGI è un protocollo di comunicazione tra webserver e un eseguibile. Vengono chiamati cgi degli eseguibili che sono in grado di dialogare con un webserver.
Il protocollo è molto semplice: il webserver setta alcune variabili d'ambiente, tramite cui passa i dati, e poi lancia l'eseguibile, che per ricevere i dati legge le suddette variabili d'ambiente, fa le sue elaborazioni e restituisce i risultati con un MIME compatibile con un webserver.
Non so come si faccia in C++ ma in Perl ad esempio i dati si ricevono con:
codice:
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}
dove $ENV{'CONTENT_LENGTH'} è la variabile d'ambiente ove è indicata la dimensione dell'input, STDIN è filehandle dove è l'input
per riestituire l'output si fa ad esempio così:
print "Content-type: text/html\n\n";
# abbiamo settato il MIME
print "<html>Ciao</html>";
# mandiamo il risultato.