Seite 1 von 1

CGI in C programmieren

Verfasst: Fr Feb 16, 2001 12:08 am
von Nilquader
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

Verfasst: Fr Feb 16, 2001 3:19 pm
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.
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!

CGI in C programmieren

Verfasst: Fr Feb 16, 2001 5:21 pm
von bladegunner
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 ...

CGI in C programmieren

Verfasst: Fr Feb 16, 2001 7:10 pm
von Zeratul
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

------------------

CGI in C programmieren

Verfasst: Fr Feb 16, 2001 11:40 pm
von Nilquader
<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.

------------------

CGI in C programmieren

Verfasst: Sa Feb 17, 2001 3:05 am
von Payne
<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? Bild

------------------
Payne's Server + Webcam :)
CoLD SToRAGE, DJ Hooligan, DJ Tomcraft, ATB, Cosmic Gate, Westbam, Paul Van Dyk, Floorfilla rulen!

CGI in C programmieren

Verfasst: Sa Feb 17, 2001 9:53 pm
von Nilquader
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?

CGI in C programmieren

Verfasst: So Feb 18, 2001 8:19 pm
von Nilquader
<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!

CGI in C programmieren

Verfasst: Mo Feb 19, 2001 1:23 pm
von Zeratul
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

------------------