Hallo!
Ich möchte über eine HTML-Seite ein CGI-File (in C geschrieben) öffnen. Das CGI-File soll dann einen String (erstmal "hallo") per stdout (POST) an die HTML-Seite "senden". Der soll dann in dem Textfeld "daten" dargestellt werden.
Der Ablauf ist aber folgendermaßen:
Wenn ich im HTML-Dokument
http://localhost/Datenbank_CGI.html
auf dem Submitbutton drücke, wird das CGI-File ausgeführt. Anschließent wird mir im Browser die Seite:
http://localhost/cgi-bin/datenbank_cgi.cgi
mit folgendem Inhalt angezeigt:
steuerung=1&daten=hallo
Ich wollte aber erreichen, das der Text hallo in das Textfeld daten geschrieben wird. Was mach ich denn da Falsch?
Schon mal vielen Dank für Eure Hilfe!
Gruß Tobias
Hier die dazugehörigen POrogramme:
Datenbank_CGI.html:
<html>
<body>
<h1 align="center">Datenbank für Haushaltsgeräte</h1> </br></br>
<hr>
<form method="post" action="http://localhost/cgi-bin/datenbank_cgi.cgi">
<pre>
Datensatzauswahl:
voriger<input type="radio" name="steuerung" value="-1"><input type="submit"value="OK"><input type="radio" name="steuerung" value="1" checked>nächster
<input type="text" name="daten" size=100>
</pre>
</form>
<hr>
</body>
</html>
datenbank_cgi.c:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int main (void)
{
FILE *fptr = NULL;
FILE *p_stdin = NULL;
FILE *p_stdout = NULL;
char* p_String_Laenge = 0;
int Laenge = 0;
char Eingabe[500] = {0};
char Ausgabe[500] = {0};
char* p_Eingabe = Eingabe;
char zahl = 0;
printf("Content-type: text/html\n\n");
// um zu sehen, ob das File ausgeführt wurde...
p_String_Laenge = getenv("CONTENT_LENGTH");
Laenge = *p_String_Laenge;
p_stdin = stdin;
fread(Eingabe, Laenge, 1, p_stdin);
Eingabe[Laenge+1] = '\0';
zahl = Eingabe[10];
fptr = fopen("datenbank.txt","a+");
fprintf(fptr, "%s...%c\n",Eingabe,zahl);
fclose(fptr);
//strcpy(Ausgabe, "steuerung=1&daten=hallo\0");
//p_stdout = stdout;
//fwrite(Ausgabe,(int)23,1, p_stdout);
fprintf(stdout, "steuerung=1&daten=hallo\n");
//printf("<a href='http://localhost/Datenbank_CGI.html'>");
return EXIT_SUCCESS;
}
Ich möchte über eine HTML-Seite ein CGI-File (in C geschrieben) öffnen. Das CGI-File soll dann einen String (erstmal "hallo") per stdout (POST) an die HTML-Seite "senden". Der soll dann in dem Textfeld "daten" dargestellt werden.
Der Ablauf ist aber folgendermaßen:
Wenn ich im HTML-Dokument
http://localhost/Datenbank_CGI.html
auf dem Submitbutton drücke, wird das CGI-File ausgeführt. Anschließent wird mir im Browser die Seite:
http://localhost/cgi-bin/datenbank_cgi.cgi
mit folgendem Inhalt angezeigt:
steuerung=1&daten=hallo
Ich wollte aber erreichen, das der Text hallo in das Textfeld daten geschrieben wird. Was mach ich denn da Falsch?
Schon mal vielen Dank für Eure Hilfe!
Gruß Tobias
Hier die dazugehörigen POrogramme:
Datenbank_CGI.html:
<html>
<body>
<h1 align="center">Datenbank für Haushaltsgeräte</h1> </br></br>
<hr>
<form method="post" action="http://localhost/cgi-bin/datenbank_cgi.cgi">
<pre>
Datensatzauswahl:
voriger<input type="radio" name="steuerung" value="-1"><input type="submit"value="OK"><input type="radio" name="steuerung" value="1" checked>nächster
<input type="text" name="daten" size=100>
</pre>
</form>
<hr>
</body>
</html>
datenbank_cgi.c:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
int main (void)
{
FILE *fptr = NULL;
FILE *p_stdin = NULL;
FILE *p_stdout = NULL;
char* p_String_Laenge = 0;
int Laenge = 0;
char Eingabe[500] = {0};
char Ausgabe[500] = {0};
char* p_Eingabe = Eingabe;
char zahl = 0;
printf("Content-type: text/html\n\n");
// um zu sehen, ob das File ausgeführt wurde...
p_String_Laenge = getenv("CONTENT_LENGTH");
Laenge = *p_String_Laenge;
p_stdin = stdin;
fread(Eingabe, Laenge, 1, p_stdin);
Eingabe[Laenge+1] = '\0';
zahl = Eingabe[10];
fptr = fopen("datenbank.txt","a+");
fprintf(fptr, "%s...%c\n",Eingabe,zahl);
fclose(fptr);
//strcpy(Ausgabe, "steuerung=1&daten=hallo\0");
//p_stdout = stdout;
//fwrite(Ausgabe,(int)23,1, p_stdout);
fprintf(stdout, "steuerung=1&daten=hallo\n");
//printf("<a href='http://localhost/Datenbank_CGI.html'>");
return EXIT_SUCCESS;
}
Kommentar