CGI für C
Ingmar Schuster
- cgi
Gu'n abend!
ähm, weiß zufällig jemand, wo es eine gute Doku über die CGI-Programmierung in C/C++ gibt?
Danke im Voraus...
MfG
Ingmar
Gu'n abend!
ähm, weiß zufällig jemand, wo es eine gute Doku über die CGI-Programmierung in C/C++ gibt?
Danke im Voraus...
Du benutzt ein ganz normales C-Programm, gibst als 1. mal "Content-type: text/html\n\n" aus, und die Parameter liest du von STDIN oder von einer ENV-Variable ein. Also nix besonderes. Auf www.cgi-resources.com gibt es glaube ich auch ein paar Libs, die das einfacher machen.
Servus Erik,
zu Deinem Posting folgende Frage:
und die Parameter liest du von STDIN ...
unn hier haste Probleme. Probleme der Art, wie Du einem C-Programm beibringst, einen Paramter der Form des Aufrufes in HTML oder Javascript "...name.exe?x=abc&y=def.." als Parameter bzw. als Programmaufruf zu interpretieren. C erwartet von der STDIN doch "name.exe para1.value para2.value ...". Wenn Du das C-Programm nicht über eine Form aufrufst, so steht Dir die ENV-Variable fürs C-Programm nicht zur Verfügung! Wie gehst Du dann vor?
Gruß, Dirk
und die Parameter liest du von STDIN ...
unn hier haste Probleme. Probleme der Art, wie Du einem C-Programm beibringst, einen Paramter der Form des Aufrufes in HTML oder Javascript "...name.exe?x=abc&y=def.." als Parameter bzw. als Programmaufruf zu interpretieren.
Das mußt Du dem C-Programm nicht "beibringen".
Es ist der Webserver, der je nach Modus (GET bzw. POST) die Parameter (URL-encoded bzw. wasauchimmer bei POST) isoliert (diese Modus bekommt er als Angabe im HTTP-Header übergeben) und dem aufgerufenen CGI-Programm via Environment bzw. stdin anbietet.
Mit der URL-Codierung der Sonderzeichen muß sich allerdings das C-Programm befassen (dafür schreibt man sich halt eine Funktion oder sucht im WWW danach).
C erwartet von der STDIN doch "name.exe para1.value para2.value ...".
C "erwartet" gar nichts.
Es würde die in dieser Form übergebenen Parameter in der Tat nach argv[] schreiben, das ist aber keineswegs die einzige Möglichkeit, einem C-Programm Werte zu übergeben.
Wenn Du das C-Programm nicht über eine Form aufrufst, so steht Dir die ENV-Variable fürs C-Programm nicht zur Verfügung!
Wie gehst Du dann vor?
Eine "ENV-Variable" gibt es nicht.
Das Environment besteht vielmehr aus beliebig vielen Variablen, und auch in C gibt es Bibliotheksfunktionen, das Environment zu lesen und sogar zu verändern.
(Was mit CGI übrigens gar nichts zu tun hat - das Environment ist einfach ein Konzept der entsprechenden Betriebssysteme und existiert gleichermaßen in Windows wie in UNIX.)