CGI in C programmieren
Moderator: Katana
CGI in C programmieren
Ich muss ein CGI in C programmieren, was eine per Browser übergebene Datei lädt (also z.B. http://www.domain.de/cgi-bin/script?datei=datei.ext )und sie dann halt an den browser sendet. Da ich keine Ahnung von CGI in C hab, brauche ich infos wie ich die per browser übergebenen parameter abfrage, hat jemand ne iDee?
CGI in C programmieren
Hmm ich persönlich kann dir nicht weiterhelfen, aber muss es in C sein? Vielleicht würdest du mehr hilfe bekommen, wenn du das in Perl realisieren würdest.
Ich hab keine Ahnung, aber ich glaube mit Perl+CGIs kennen sich hier mehr aus, oder? Denk ich mal...
------------------
Payne's Server + Webcam
CoLD SToRAGE, DJ Hooligan, DJ Tomcraft, ATB, Cosmic Gate, Westbam, Paul Van Dyk, Floorfilla rulen!
Ich hab keine Ahnung, aber ich glaube mit Perl+CGIs kennen sich hier mehr aus, oder? Denk ich mal...
------------------
Payne's Server + Webcam
CoLD SToRAGE, DJ Hooligan, DJ Tomcraft, ATB, Cosmic Gate, Westbam, Paul Van Dyk, Floorfilla rulen!
-
bladegunner
- Beiträge: 313
- Registriert: So Dez 03, 2000 1:01 am
CGI in C programmieren
Ob Perl+CGI oder C+CGI is eigentlich egal, Übergeben wirds genauso, bloss in einer anderen Sprache programmiert. Schau dir an wie man ein Perl-CGI-Script übergibt, dann weißt du auch, wie man ein C-CGI-Script übergibt.
------------------
oldskool games and dc ruleZ!
bladegunner ...
member of xbox-universe.de ...
------------------
oldskool games and dc ruleZ!
bladegunner ...
member of xbox-universe.de ...
CGI in C programmieren
Man kann cgi auch in Basic programmieren (habs schonmal gemacht
aber was nützt das wenn man die dazu notwendigen befehle nicht kennt. also: Unter C (bzw. c++ falls du cout statt printf nutzt):
(ich geh' mal davon aus das du wohl weißt wie du mit fopen, fgets, etc, die datei öffnest und dir den inhalt in den speicher holst)
im falle [url=http://......?blabla]http://......?blabla[/url] ist die request-method mit der der server die daten zum cgi sendet "get", das bedeutet das du alle daten die nach dem fragezeigen eingetippt wurden in der umgebungsvariable
QUERY_STRING wiederfindest
alles was du nun an den browser senden willst (also, der html code) kannst du entweder über printf, oder über cout senden. praktisch wie im ganz normalem c-leben
codebeispiel:
#include iostream.h
void main()
{
cout << "<html><body>
<font size='3'><b>";
cout << "Sie haben <br>" << QUERY_STRING;
cout << "<br>hinter Ihre URL eingegeben";
cout << "
</body></html>";
}
bei http://balbal.bbla?datei=test.txt
sendet das ding die HTML-Seite:
<html><body>
<font size='3'><b>Sie haben <br>datei=test.txt<br>hinter Ihre URL eingegeben
</body></html>
nützlich ist es allerdings wenn du anfangs ein kleines
cout << "Content-Type: text/html
";
packst, das ist der mime-typ, dadurch weiß der server was für daten er dem browser senden soll. andere mime-typen sagen dem browser z.B. das nun eine datei folgt.
d.h. wenn du mit deinem programm später eine datei direkt zum browser senden willst (also, so das der "speichern unter" dialog erscheint) solltest du ein kleines
Content-Type: application/octet-stream
zufügen. dan erscheint das fensterln
ich hoffe das ich dir ein bisserl helfen konnte. es gibt allerdings auch ziemlich viel sourcecode zu diesem thema im netz..
ciao
Zeratul
------------------
(ich geh' mal davon aus das du wohl weißt wie du mit fopen, fgets, etc, die datei öffnest und dir den inhalt in den speicher holst)
im falle [url=http://......?blabla]http://......?blabla[/url] ist die request-method mit der der server die daten zum cgi sendet "get", das bedeutet das du alle daten die nach dem fragezeigen eingetippt wurden in der umgebungsvariable
QUERY_STRING wiederfindest
alles was du nun an den browser senden willst (also, der html code) kannst du entweder über printf, oder über cout senden. praktisch wie im ganz normalem c-leben
codebeispiel:
#include iostream.h
void main()
{
cout << "<html><body>
<font size='3'><b>";
cout << "Sie haben <br>" << QUERY_STRING;
cout << "<br>hinter Ihre URL eingegeben";
cout << "
</body></html>";
}
bei http://balbal.bbla?datei=test.txt
sendet das ding die HTML-Seite:
<html><body>
<font size='3'><b>Sie haben <br>datei=test.txt<br>hinter Ihre URL eingegeben
</body></html>
nützlich ist es allerdings wenn du anfangs ein kleines
cout << "Content-Type: text/html
";
packst, das ist der mime-typ, dadurch weiß der server was für daten er dem browser senden soll. andere mime-typen sagen dem browser z.B. das nun eine datei folgt.
d.h. wenn du mit deinem programm später eine datei direkt zum browser senden willst (also, so das der "speichern unter" dialog erscheint) solltest du ein kleines
Content-Type: application/octet-stream
zufügen. dan erscheint das fensterln
ich hoffe das ich dir ein bisserl helfen konnte. es gibt allerdings auch ziemlich viel sourcecode zu diesem thema im netz..
ciao
Zeratul
------------------
CGI in C programmieren
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von Payne:
Hmm ich persönlich kann dir nicht weiterhelfen, aber muss es in C sein? Vielleicht würdest du mehr hilfe bekommen, wenn du das in Perl realisieren würdest.
<HR></BLOCKQUOTE>
habs bereits in perl realisiert, das programm wird auf dem Webserver so c.a. 10 - 20 mal pro Sekunde ausgeführt, und das belastet den server ganz schön. Daher habe ich mir von einer C-Umsetung einen Geschwindigkeits bzw. Performance - Vorteil erhofft.
------------------
Hmm ich persönlich kann dir nicht weiterhelfen, aber muss es in C sein? Vielleicht würdest du mehr hilfe bekommen, wenn du das in Perl realisieren würdest.
<HR></BLOCKQUOTE>
habs bereits in perl realisiert, das programm wird auf dem Webserver so c.a. 10 - 20 mal pro Sekunde ausgeführt, und das belastet den server ganz schön. Daher habe ich mir von einer C-Umsetung einen Geschwindigkeits bzw. Performance - Vorteil erhofft.
------------------
CGI in C programmieren
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von Nilquader:
...so c.a. 10 - 20 mal pro Sekunde....
<HR></BLOCKQUOTE>
Wo gibts das? URL?
------------------
Payne's Server + Webcam
CoLD SToRAGE, DJ Hooligan, DJ Tomcraft, ATB, Cosmic Gate, Westbam, Paul Van Dyk, Floorfilla rulen!
...so c.a. 10 - 20 mal pro Sekunde....
<HR></BLOCKQUOTE>
Wo gibts das? URL?

------------------
Payne's Server + Webcam
CoLD SToRAGE, DJ Hooligan, DJ Tomcraft, ATB, Cosmic Gate, Westbam, Paul Van Dyk, Floorfilla rulen!
CGI in C programmieren
Payne, leider nicht öffentlich im Netz...zumindest jetzt noch nicht, solange es nicht läuft...
Zeratul, danke für den Beispiel-Code, wenn ich versuche, das zu compilieren, sagt der Compiler immer, QUERY_STRING gibts nicht, ich hätte erwähnen sollen, das das ganze unter linux läuft, also gcc als compiler...noch eine idee?
Zeratul, danke für den Beispiel-Code, wenn ich versuche, das zu compilieren, sagt der Compiler immer, QUERY_STRING gibts nicht, ich hätte erwähnen sollen, das das ganze unter linux läuft, also gcc als compiler...noch eine idee?
CGI in C programmieren
<BLOCKQUOTE><font size="1" face="Verdana, Arial">Zitat:</font><HR>Original erstellt von Zeratul:
es gibt allerdings auch ziemlich viel sourcecode zu diesem thema im netz..
<HR></BLOCKQUOTE>
kannst du mal bitte sagen, wo ich ein Beispiel dazu im netz finde? Bis jetzt hab ich noch nichts brauchbares gefunden.
------------------
Ok, sie kommen ins ME-Benutzer-Team!
es gibt allerdings auch ziemlich viel sourcecode zu diesem thema im netz..
<HR></BLOCKQUOTE>
kannst du mal bitte sagen, wo ich ein Beispiel dazu im netz finde? Bis jetzt hab ich noch nichts brauchbares gefunden.
------------------
Ok, sie kommen ins ME-Benutzer-Team!
CGI in C programmieren
oops, ich dussel, hatte vergessen das
ich ja einen kleinen speziellen
header nutze der QUERY_STRING als
konstante deklariert, naja, es
geht allerdings auch ohne das ding (is eh windos) mittels
getenv("QUERY_STRING");
hier noch einige webadressen: http://www.boutell.com/cgic/ http://www.sourcebank.com http://monarch.papillion.ne.us/~sthomas/cgi_in_c.html http://www.cgi.resourceindex.com/Documentation/Programming_Languages/Programming_in_C_and_C++/
ciao
------------------
ich ja einen kleinen speziellen
header nutze der QUERY_STRING als
konstante deklariert, naja, es
geht allerdings auch ohne das ding (is eh windos) mittels
getenv("QUERY_STRING");
hier noch einige webadressen: http://www.boutell.com/cgic/ http://www.sourcebank.com http://monarch.papillion.ne.us/~sthomas/cgi_in_c.html http://www.cgi.resourceindex.com/Documentation/Programming_Languages/Programming_in_C_and_C++/
ciao
------------------
