CGIs in C geschrieben
RoRo
- cgi
0 Klaus Mock0 RoRo0 Klaus Mock0 RoRo
0 Christoph Zurnieden
hi,
es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html
welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.
Gruß, Rolf
Hallo,
es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html
Mir ist beim schnellen überfliegen des Artikels eine (für mich) Ungereimtheit aufgefallen, die Du Dir eventuell noch einmal anschauen solltest
<code>
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>CGI Umgebung</TITLE>\n</HEAD>\n");
fprintf(cgiOut, "<BODY><H1>CGI Umgebung</H1>\n");
printf("cgiServerSoftware: %s<br>", cgiServerSoftware);
[...]
printf("cgiContentLength: %s<br>", cgiContentLength);
fprintf(cgiOut, "</BODY>\n</HTML>\n");
</code>
Warum wird einerseits ein fprintf, andererseits ein printf ausgeführt?
Ist das nur zur Veranschaulichung, daß sowieso beides geht, oder einfach nur 'passiert'?
Grüße
Klaus
Hallo,
es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html
Mir ist beim schnellen überfliegen des Artikels eine (für mich) Ungereimtheit aufgefallen, die Du Dir eventuell noch einmal anschauen solltest
<code>
cgiHeaderContentType("text/html");
fprintf(cgiOut, "<HTML><HEAD>\n");
fprintf(cgiOut, "<TITLE>CGI Umgebung</TITLE>\n</HEAD>\n");
fprintf(cgiOut, "<BODY><H1>CGI Umgebung</H1>\n");
printf("cgiServerSoftware: %s<br>", cgiServerSoftware);
[...]
printf("cgiContentLength: %s<br>", cgiContentLength);
fprintf(cgiOut, "</BODY>\n</HTML>\n");
</code>
Warum wird einerseits ein fprintf, andererseits ein printf ausgeführt?
Ist das nur zur Veranschaulichung, daß sowieso beides geht, oder einfach nur 'passiert'?
Ersteres ;-) Es können beide funktionen verwendet werden, wobei die fprinf() eine spezielle Funktion der cgic-lib ist (siehe dort).
Btw, es gibt da noch einige weitere Libs für C, schau mal hier
http://www.cgi-resources.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/, auch das Upload wird von einigen unterstützt. Mit CGI.h ist z.B. das Modul CGI.pm von Lincoln Stein implementiert und es gibt auch eine Lib analog zur cgi-lib.pl (von Steven E. Brenner).
Die Links zu diesen Libs muss ich ncoh im Artikel einbauen, c-Tutorials gibt es ebenfalls haufenweise im WWW - c ist ein weites Betätigungsfeld für lange Winterabende ;-)
Gruß aus KA, Rolf
Hallo,
Warum wird einerseits ein fprintf, andererseits ein printf ausgeführt?
Ist das nur zur Veranschaulichung, daß sowieso beides geht, oder einfach nur 'passiert'?
Ersteres ;-) Es können beide funktionen verwendet werden, wobei die fprinf() eine spezielle Funktion der cgic-lib ist (siehe dort).
Na ja, fprintf habe ich schon verwendet, als CGI,HTML,HTTP usw. noch nicht mal definiert waren (ist Bestandteil von stdio) ;-)
Btw, es gibt da noch einige weitere Libs für C, schau mal hier
http://www.cgi-resources.com/Programs_and_Scripts/C_and_C++/Libraries_and_Classes/, auch das Upload wird von einigen unterstützt. Mit CGI.h ist z.B. das Modul CGI.pm von Lincoln Stein implementiert und es gibt auch eine Lib analog zur cgi-lib.pl (von Steven E. Brenner).
Danke, vielleicht finde ich dort auch einige Hints, um meine HTTP-Clientseite besser zu implemetieren.
Die Links zu diesen Libs muss ich ncoh im Artikel einbauen, c-Tutorials gibt es ebenfalls haufenweise im WWW - c ist ein weites Betätigungsfeld für lange Winterabende ;-)
Da wird das aber, angesichts des baldigen Frühlingsbeginn, noch ein paar Monate warten müssen, außer Du 'opferst' inzwischen die Regentage dafür;-)
Grüße
Klaus
Hi Klaus,
Na ja, fprintf habe ich schon verwendet, als CGI,HTML,HTTP usw. noch nicht mal definiert waren (ist Bestandteil von stdio) ;-)
das stimmt natürlich.
Andererseits empfiehlt Boutell also fprintf(cgiOut,"");
weil:
"_Important:_ [52]cgiOut is normally equivalent to stdout, and there is
no performance penalty for using it. It is recommended that you write
output to [53]cgiOut to ensure compatibility with future versions of
the cgic library for special environments that do not provide stdin
and stdout for each cgi connection."
Machs gut, Rolf
Hallo,
es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html
welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.
Sosehr ich dafür bin,den Nachwuchs zu fördern, möchte ich doch bitten ihn nicht schlampiges Arbeiten zu lehren. Sowas setzt sich leider fest und führt am Ende zu eher peinlichen Meldungen bei securityfocus.org et al.
Kein einziger der C-Snippets ist fehlerfrei, von ordentlicher Ausführung ganz abgesehen. Zumindest ein Hinweis müßte hin.
Auch vermisse ich weiterführende Links. 5 Minuten bei Google hätten doch zumindest das eine oder andere Tutorial ergeben, oder? ;-)
Ich bin aber natürlich gerne bei der Korrektur behilflich, falls gewünscht.
so short
Christoph Zurnieden
PS: fällt mir gerade erst auf: GCC und DJGPP sind normalerweise zwei verschiedene Compiler, die Installationsanleitung oben ist etwas irritierend.
CZ
Moin CZ,
es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html
welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.
Dank deiner Hinweise hab ich o.g. Artikel nocheinmal komplett überarbeitet, Fehler bereinigt, kurze Erläuterungen zum Code gegeben und ein paar Links eingebaut.
Machs gut, Rolf
Hallo,
es gibt einen neuen Artikel
http://i-netlab.de/cgilib/cgiinc.html
welcher eine klitzekleine Einführung dazu gibt wie CGIs in C geschrieben werden können: Download, Installation des GCC (C Compiler) in einer Windows Umgebung, erstes C-Progrämmchen, erstes CGI und natürlich einen Abschnitt zur cgic Library von Thomas Boutell.
Dank deiner Hinweise hab ich o.g. Artikel nocheinmal komplett überarbeitet, Fehler bereinigt, kurze Erläuterungen zum Code gegeben und ein paar Links eingebaut.
Aha, wußtest also ganz genau, _was_ da nicht stimmte, gelle? ;-)
BTW: so ganz stimmt es immer noch nicht, ist aber so i.O.
Als kleines Beispiel, warum das so reichen muß, sei hier mal eine korrekte "Hello World" Version hingesetzt.
Ja genau: man kann es auch übertreiben ;-)))
#include <stdlib.h> /* für exit() und Macrodefinitionen */
#include <stdio.h> /* für puts() und Macrodefinitionen */
int main(void){
if( puts("Hello World") != EOF) {
exit(EXIT_SUCCESS);
} else {
exit(EXIT_FAILURE);
}
}
so short
Christoph Zurnieden