PDA

Visualizza la versione completa : Html form e cgi


FastMagister
22-10-2007, 19:55
Ciao ragazzi,

ho una pagina html con il seguente codice:


<FORM ACTION="http://localhost/cgi-bin/mio.cgi" target="_blank">


Please specify the multiplicands:
<INPUT NAME="m" SIZE="5">
<INPUT NAME="n" SIZE="5">

<INPUT TYPE="SUBMIT" VALUE="Multiply!">
</FORM>

ed il codice che genera il cgi è (in C..):


#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *data;
long m,n;
printf("%s%c%c\n","Content-Type:text/html;charset=iso-8859-1",13,10);
printf("<TITLE>Multiplication results</TITLE>\n");
printf("<H3>Multiplication results</H3>\n");
data = getenv("QUERY_STRING");
if(data == NULL)
printf("

Error! Error in passing data from form to script.");
else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2)
printf("

Error! Invalid data. Data must be numeric.");
else
printf("

The product of %ld and %ld is %ld.",m,n,m*n);
return 0;
}


Qualcuno saprebbe dirmi perchè, una volta compilato il sorgente C e messo il file eseguibile "mio.cgi" nella directory cgi-bin del mio server locale, alla pressione del tasto "Multiply" sulla pagina html non succede assolutamente nulla?
(sottolineo il fatto che non compaiono neanche messaggi di "page not found" come mi succedeva precedentemente quando sbagliavo la cartella dove mettere l'eseguibile...).

In poche parole, cosa devo fare per poter visualizzare il risultato della moltiplicazione?

Come avrete capito sono un neofita di queste tecnologie, quindi mi scuso per la banalità della domanda, ma ho provato a cercare nelle discussioni passate senza trovare la risposta adatta...

Grazie, ciao

Federix
23-10-2007, 09:31
Esiste un forum apposito per parlare di CGI :rollo:

Hai provato a mettere method="post" nel tag <form>??

FastMagister
23-10-2007, 09:50
Risolto. Semplicemente sbagliavo il path dove copiare il cgi in Apache.

Avrei altre due domande da pivellino però...:

1) con il codice postato visualizzo correttamente il risultato della moltiplicazione, ma in una nuova pagina. E' possibile in qualche modo visualizzarlo nella stessa pagina html contenete il form di invio? (magari in una textfiel apposita...)

2) se pure non esplicitato (ne evinco che sia di default...) sto usando il metodo GET e non il metodo POST. Se volessi passare a POST ovviamente dovrei riscrivere il cgi C per gestire in modo diverso la stringa passata. Sapreste indicarmi dei riferimenti in rete o direttamente dei suggerimenti per scrivere rapidamente piccole funzioni C per la gestione della stringa ricevuta tramite metodo POST?

Ciao e grazie

shishii
23-10-2007, 21:16
Originariamente inviato da FastMagister
Risolto. Semplicemente sbagliavo il path dove copiare il cgi in Apache.

Avrei altre due domande da pivellino però...:

1) con il codice postato visualizzo correttamente il risultato della moltiplicazione, ma in una nuova pagina. E' possibile in qualche modo visualizzarlo nella stessa pagina html contenete il form di invio? (magari in una textfiel apposita...)



è possibile usando la tecnologia AJAX, che ti consente di fare richiesta asincrone al server, ovvero di caricare dati frutto di elaborazione server side nella stessa pagina.




2) se pure non esplicitato (ne evinco che sia di default...) sto usando il metodo GET e non il metodo POST. Se volessi passare a POST ovviamente dovrei riscrivere il cgi C per gestire in modo diverso la stringa passata. Sapreste indicarmi dei riferimenti in rete o direttamente dei suggerimenti per scrivere rapidamente piccole funzioni C per la gestione della stringa ricevuta tramite metodo POST?

Ciao e grazie

I parametri passati tramite il metodo POST sono raccoglibili dal filehandle STDIN, ovvero dallo standard input. Come questo si faccia in C non ti so dire.

Loading