![]() |
[cgi in c geschreven] Hoe doe ik variabelen van een pagina lezen en daarna weergeven?
Op school moet ik een heel simpel cgi script maken in c taal voor een linux server.
We moeten een html pagina maken met 2 invoer velden. Voornaam en achternaam bijvoorbeeld: -------------------------------- <HTML> <HEAD> <TITLE>Demo post en get</TITLE> </HEAD> <BODY> <FORM method=post action="http://10.10.20.12/~hotel3/cgi-bin/gtc/postenget"> <BR>Wat invoervelden. <BR><INPUT TYPE="TEXT" NAME="NAAM"> <BR><INPUT TYPE="TEXT" NAME="VOORNAAM"> <INPUT TYPE="SUBMIT" VALUE="VERZENDEN"> <BR> </FORM> </BODY> </HTML> ------------------------------ dit is dan met de method POST. Als het goed is zou je dan alleen die method in GET moeten veranderen voor een GET script. (toch ???) hieronder staat dan een script die eigenlijk de POST en de GET zou moeten kunnen verwerken. ----------------------------------- #include <stdio.h> #include <string.h> #include <stdlib.h> main() { char *methode; char *lengte; char *type; char *string; char voornaam[30]; char achternaam[30]; methode = getenv("REQUEST_METHOD"); lengte = getenv("CONTENT_LENGTH"); type = getenv("CONTENT_TYPE"); string = getenv("QUERY_STRING"); scanf("%c", &voornaam[30]); scanf("%c", &achternaam[30]); printf("content-type: text/html \n\n"); printf("<HTML><br><br>\n\n"); printf("<head><title>test pagina 1</title></head>\n") ; printf("<body>\n") ; printf("<h1>voornaam = %c</h1>\n", voornaam); printf("<h1>achternaam = %c </h1>\n", achternaam); printf("<p>type = %s</P>\n", type); printf("<p>lengte = %s</P>\n", lengte); printf("<p>methode = %s</P>\n", methode); printf("<p>query string = %s</P>\n", string); printf("</body>\n"); printf("</html>\n"); printf("<br>\n"); return 0; } ----------------------------------- als ik nou een pagina met GET gebruik krijg ik alleen bij query string te zien wat daar in staat. Bijvoorbeeld: NAAM=de+Boer&VOORNAAM=Rob Bovenaan de pagina staat de tekst "voornaam" en "achternaam". Hier achter zou die dus die variablen ook moeten printen. Nu krijg je alleen rare ascii tekens ofzo. En bij POST kan je nu al helemaal niets zien natuurlijk. KAn iemand een mooi script geven voor een POST pagina en een GET pagina die dan 2 velden uitlezen en op de terug gegeven pagina kan weergeven. Alvast bedankt!!! (y) |
is het nou toch best moeilijk allemaal of heeft gewoon niemand zin om te reageren?
|
Code:
scanf("%c", &voornaam[30]); Je moet je querystring zelf splitsen... |
Citaat:
|
Citaat:
Je hebt je query string als karakter reeks. Dan kun je er dmv pointers doorheenlopen en de benodigde gegevens opslaan. Je weet dat voor de '=' het veld staat van de pagina (NAAM) en achter de '=' de waarde, tot een '&' teken. (kijk maar naar je string). Alles wat tussen de '=' en '&' staat is dus de waarde die je nodig hebt. Verder lijkt de '+' op een spatie... Er zal allicht een beter methode zijn, maar zo goed is mijn C kennis niet... |
ik heb op inet nu een stukje gevonden om een query_string uit te lezen. MAar ik snap niet helemaal wat dit programma doet :(
------------------------------------------- #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("<P>Error! Error in passing data from form to script."); else if(sscanf(data,"m=%ld&n=%ld",&m,&n)!=2) printf("<P>Error! Invalid data. Data must be numeric."); else printf("<P>The product of %ld and %ld is %ld.",m,n,m*n); return 0; } ------------------------------------------- wat doet deze regel: Citaat:
is sscanf er om een bestaande variabele juist weer in te lezen ofzo? Als dat zo is dan snap ik alleen nog niet wat tussen de aanhalings tekens staat. iemand die kan helpen? |
Alle tijden zijn GMT +1. Het is nu 05:24. |
Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.