Hallo Sven,
ich hatte es weiter unten schon mal erwähnt (in der einen Antwort zu Deinem C-Problem), es fehlt in Deinem Prog zumindest die Zeile
print("Content-Type: text/html\n\n");
bevor weitere html-Ausgaben folgen. Möglich, daß es ohne den Header beim OmniHTTPd trotzdem funktioniert, die meisten anderen Server dagegen werden ihren Dienst verweigern. Ansonsten noch eine Kleinigkeit:
void main()
muß normalerweise "int main(void)" oder in der Kurzschreibweise einfach "main()" heißen, da der Return-Typ von main() immer int ist (ein Programm gibt normalerweise am Ende immer einen integer Return-Code zurück. 0 bedeutet dabei, daß alles ok gelaufen ist, andere Zahlenwerte stehen für einen Fehlercode).
{
»» printf ("<html><head></head><body>%s\n</body></html>", getenv("QUERY_STRING"));
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type></HEAD>
<BODY></BODY></HTML>WARUM???
Die Ausgabe läßt sich wie folgt interpretieren: Zunächst mal hat omniHTTPd offenbar das Programm ausgeführt, obwohl es keinen HTTP-Header ausgegeben hat (s.o.). Die Zeilen mit <!DOCTYPE ...> und <META ...> sind offenbar vom Server selbst hinzugefügt worden. Der HTML-Text <body></body></html> deutet darauf hin, daß getenv("QUERY_STRING") einen leeren String bzw. einen Nullpointer zurückgegeben hat. Aus irgendeinem Grund ist also QUERY_STRING bei Dir nicht definiert.
probier doch z.B. mal folgendes (ungetestet):
#include<stdio.h>
#include<stdlib.h>
#include<string.h> // ich hoffe, das reicht an includes... <g>
main() {
char *s = getenv("QUERY_STRING");
printf("Content-Type: text/html\n\n<html><body><pre>\n");
if (s==NULL) printf("QUERY_STRING war nicht definiert\n");
else if (strlen(s)==0) printf("QUERY_STRING ist ein leerer String\n");
else printf("QUERY_STRING=%s\n", s);
printf("</pre></body></html>\n");
return 0;
}
Viele Grüße
Andreas Bierhals