CGI in C programmieren

Hardware, Software, Webdesign & Coding.

Moderator: Katana

Antworten
Nilquader
Beiträge: 48
Registriert: Mi Feb 14, 2001 1:01 am

CGI in C programmieren

Beitrag 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?
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

CGI in C programmieren

Beitrag 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!
bladegunner
Beiträge: 313
Registriert: So Dez 03, 2000 1:01 am

CGI in C programmieren

Beitrag 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 ...
Zeratul
Beiträge: 121
Registriert: Mi Jan 05, 2000 1:01 am

CGI in C programmieren

Beitrag 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

------------------
Nilquader
Beiträge: 48
Registriert: Mi Feb 14, 2001 1:01 am

CGI in C programmieren

Beitrag 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.

------------------
Benutzeravatar
Payne
Wipeout-Freak
Beiträge: 4271
Registriert: Do Jul 06, 2000 12:01 am

CGI in C programmieren

Beitrag 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!
Nilquader
Beiträge: 48
Registriert: Mi Feb 14, 2001 1:01 am

CGI in C programmieren

Beitrag 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?
Nilquader
Beiträge: 48
Registriert: Mi Feb 14, 2001 1:01 am

CGI in C programmieren

Beitrag 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!
Zeratul
Beiträge: 121
Registriert: Mi Jan 05, 2000 1:01 am

CGI in C programmieren

Beitrag 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

------------------
Antworten