Quoth Geschrieben 30. August 2004 Geschrieben 30. August 2004 Hallo! Ich habe ein Problem mit C und meiner HTML-Seite. Ich hatte zuerst eine Teilseite mit der Funktionalität index.html genannt um sie schneller testen zu können. Alles funktionierte einwandfrei. Jetzt ist aber meine index.html die Startseite und die Funktionsseite heißt nun "test.html" und befindet sich in /website/site (von index.html aus gesehen). Aber nun funktioniert die Interaktion mit der "Testseite" nicht mehr. Hier mal die Stelle an der es hapert: /* öffnen des Templates */ param = fopen("/home/httpd/website/site/test.html", "r"); /* war: param = fopen("/home/httpd/deprag/index.html", "r");*/ if (!param) return 0; dynp = fopen("/home/httpd/website/site/test.html", "w"); /* war: dynp = fopen("/home/httpd/index.html", "w");*/ if (!dynp) return 0; und: /* Ausgabe der neu erzeugten Datei an den Browser */ dynp_in = fopen("/home/httpd/website/site/test.html", "r"); /*war dynp_in = fopen("/home/httpd/index.html", "r");*/ Hab ich da einen Denkfehler drin? :confused:
kLeiner_HobBes Geschrieben 30. August 2004 Geschrieben 30. August 2004 Seh ich das falsch, oder öffnest du im ersten Code-Teil die test.html einmal zum Lesen und dann zum Schreiben, ohne vorher einen Close() gemacht zu haben? Das hast du nämlich nicht bei der index gemacht, die hast du von deprag geholt und direkt in / geschrieben.
Quoth Geschrieben 30. August 2004 Autor Geschrieben 30. August 2004 nee, das fclose(dynp); kommt erst noch ein Stück weiter unten aber bei der zweiten Pfadangabe ist mir ein Fehler unterlaufen, merk ich gerade. Aber das ändert nix daran, dass es nicht funktioniert. Hier nochmal der Code-Auszug: param = fopen("/home/httpd/website/site/test.html", "r"); /* war: param = fopen("/home/httpd/deprag/index.html", "r");*/ if (!param) return 0; dynp = fopen("/home/httpd/site/test.html", "w"); /* war: dynp = fopen("/home/httpd/index.html", "w"); site ist eine verknüpfung auf einen Ordner in einem anderen Verzeichnis, da es auf home/httpd/ schreibgeschützt wäre*/ if (!dynp) return 0; /* Kopieren des Templates als neues index file */ while (!feof(param)) { char * line = 0; size_t l = 0; getline(&line,&l, param); if ((strstr(line, "</BODY>") != 0) || (strstr(line, "</body>") != 0)) { /*Einfügen einer Funktion, welche die neu eingestellten Werte setzt */ fprintf(dynp, "<script> function loaded() {document.forms[0].parameter.value=\"%i\";\n", par); if (prog == 1) fprintf(dynp, "document.forms[0].program[0].checked=true;\n"); else if (prog == 2) fprintf(dynp, "document.forms[0].program[1].checked=true;\n"); else if (prog == 3) fprintf(dynp, "document.forms[0].program[2].checked=true;\n"); fprintf(dynp, "}</script>\n"); } fputs(line, dynp); } fclose(dynp);
kLeiner_HobBes Geschrieben 30. August 2004 Geschrieben 30. August 2004 Was bringt er denn für ne Fehlermeldung? Ist in der erstellten test.html garnix drin? Wird sie überhaupt angelegt?
Quoth Geschrieben 30. August 2004 Autor Geschrieben 30. August 2004 es kommt keine Fehlermeldung. Die auf der Testseite test.html eingegebenen und abgesandten Werte werden korrekt von cgiread.c in die Parameter-Datei test.dat rausgeschrieben. Allerdings wird nach Betätigen des Submit-Buttons eine leere Seite angezeigt und die Weiterverarbeitung der Werte "Programm" und "Parameter" über das Hauptprogramm funktioniert nicht mehr. Wenn ich aber diese Testseite wieder als index.html (ohne Frames etc) umwandle, klappt alles wie es soll.
kLeiner_HobBes Geschrieben 30. August 2004 Geschrieben 30. August 2004 ja, ruft er dann überhaupt noch dein CGI-Programm auf? Ich kapiers glaub ich leider net ganz so :-/ Kannst ja mal ein Test-printf("Hier bin ich!"); oder so mitten im Code machen. Dann solltest du zumindest auf der Konsole sehen, wo du bist.
Quoth Geschrieben 10. September 2004 Autor Geschrieben 10. September 2004 Vielleicht liegt das ja auch an irgendwelchen Freigaben oder Einstellungen ... kenn mich mit Suse und Linux allgemein nicht so aus ... "verwende" das erst seit knapp 4 Wochen ...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden