Hallo,
folgendes: innerhalb eines CGIs werden Daten auf Korrektheit geprüft. Wenn n.i.O. wird eine Funktion aufgerufen, die eine Fehlermeldung ausgibt (in Form einer HTML Seite).
Das funktioniert auch, aber die Ausgabe der Fehlermeldung erfolgt direkt oberhalb der bereits angezeigten HTML-Seite. D.h. man sieht die Fehlermeldung und direkt darunter noch die Eingabemaske.
Kann man aus dem CGI heraus den Browser irgendwie veranlassen, die bereits angezeigte Seite zu löschen, so dass nur die Fehlerseite angezeigt wird?
Gruß, noisefloor
Löschen der Anzeige vor neuer Ausgabe
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Kann es sein, dass Du die Mechanismen von http, cgi und einem Browser nicht verstanden hast?
Du erzeugst doch durch das cgi eine komplett neue Seite! Lass das Formular halt einfach weg, dann hast Du doch das, was Du willst.
Du erzeugst doch durch das cgi eine komplett neue Seite! Lass das Formular halt einfach weg, dann hast Du doch das, was Du willst.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Hallo,
warte mal... du übermittelst Zeugs an den Browser, bevor du die Abfrage auf dem Server richtig fertigverarbeitet hast?
Das ist schlecht, weil unkomfortabel und bringt eben solche Probleme mit sich. Verarbeite die Abfrage erstmal auf dem Server fertig, dann kannst du nämlich entscheiden, ob du eine Fehlermeldung zurückgeben willst oder Content.
Falls du das nicht so willst: Du könntest ein Javascript schicken, das den "richtigen" Content versteckt/löscht. Aber das sind dreckige Hacks..
warte mal... du übermittelst Zeugs an den Browser, bevor du die Abfrage auf dem Server richtig fertigverarbeitet hast?
Das ist schlecht, weil unkomfortabel und bringt eben solche Probleme mit sich. Verarbeite die Abfrage erstmal auf dem Server fertig, dann kannst du nämlich entscheiden, ob du eine Fehlermeldung zurückgeben willst oder Content.
Falls du das nicht so willst: Du könntest ein Javascript schicken, das den "richtigen" Content versteckt/löscht. Aber das sind dreckige Hacks..
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Könnte es auch damit zusammenhängen, dass nach der Ausgabe der Fehlermeldung sys.exit() aufgerufen wird?
Gruß, noisefloor
DAS dachte ich auch - bis eben. Die Prüfung der Daten erfolgt nach dem Klick auf "Senden", also die Eingabemaske ist dann schon "fertig".Du erzeugst doch durch das cgi eine komplett neue Seite! Lass das Formular halt einfach weg, dann hast Du doch das, was Du willst.
Könnte es auch damit zusammenhängen, dass nach der Ausgabe der Fehlermeldung sys.exit() aufgerufen wird?
Gruß, noisefloor
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
Ja, das könnte es. Es ist sowieso schlecht, wegen einer Exception das CGI-Script zu beenden :)
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
yup, es ist wohl schlauer, die Fehlermeldung beim nächsten Selbstaufruf des CGI auszugeben als im aktuell laufenden CGI zu springen...
Werde ich mal probieren bzw. einbauen.
Gruß, noisefloor
yup, es ist wohl schlauer, die Fehlermeldung beim nächsten Selbstaufruf des CGI auszugeben als im aktuell laufenden CGI zu springen...
Werde ich mal probieren bzw. einbauen.
Gruß, noisefloor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich bin unfähig Deinen Schilderungen zu folgen! Daher schildere ich das mal so, wie ich den Prozess mir nach Deinen Angaben vorstelle:noisefloor hat geschrieben: DAS dachte ich auch - bis eben. Die Prüfung der Daten erfolgt nach dem Klick auf "Senden", also die Eingabemaske ist dann schon "fertig".
1.) Du hast eine HTML-Seite mit einem Formular darin.
2.) Du klickst auf "senden" (also den submit-Button)
3.) per http werden Deine Daten an den Webserver übertragen, der darufhin ein cgi-Script aufruft.
4.) Im Script verarbeitest Du die Daten und gibst dann anhand der Daten etwas aus.
Wo liegt denn nun das Problem? In Schritt 4 musst Du doch lediglich genau das HTML generieren, was Du haben willst?!?
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
nein, das CGI-Skript ruft sich selber auf, weil die Dateneingabe nicht "in einem Rutsch" erfolgen kann (das Skript ist eine Eingabemaske für Google Charts, Map-Diagramme). Das habe ich oben nicht erwähnt, ist aber für das Problem hier wohl ziemlich relevant, sorry.
Aber ich denke, dass ich die Lösung habe. Im aktuellen Skript erfolgt Prüfung und Ausgabe bzw. Neugenerierung in der falschen Reihenfolge. Schon doof, wenn man den Ablauf des eigenen Programms nicht richtig durchblickt...
Trotzdem natürlich Danke für eure Antworten.
Gruß, noisefloor
nein, das CGI-Skript ruft sich selber auf, weil die Dateneingabe nicht "in einem Rutsch" erfolgen kann (das Skript ist eine Eingabemaske für Google Charts, Map-Diagramme). Das habe ich oben nicht erwähnt, ist aber für das Problem hier wohl ziemlich relevant, sorry.
Aber ich denke, dass ich die Lösung habe. Im aktuellen Skript erfolgt Prüfung und Ausgabe bzw. Neugenerierung in der falschen Reihenfolge. Schon doof, wenn man den Ablauf des eigenen Programms nicht richtig durchblickt...
Trotzdem natürlich Danke für eure Antworten.
Gruß, noisefloor
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Habe ich etwas anderes behauptet? Ich schrieb:noisefloor hat geschrieben:Hallo,
nein, das CGI-Skript ruft sich selber auf, weil die Dateneingabe nicht "in einem Rutsch" erfolgen kann
Ob diese nun schon vorher durch ein CGI generiert wurde ist doch vollkommen egal!1.) Du hast eine HTML-Seite mit einem Formular darin.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ok, so gesehen...
Kann man hier Threads auf gelöst setzen oder hat phpBB die Funktion nicht?
Gruß, noisefloor
ok, so gesehen...
Kann man hier Threads auf gelöst setzen oder hat phpBB die Funktion nicht?
Gruß, noisefloor
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Siehe Forenregeln, dort ists erklärt.noisefloor hat geschrieben:Kann man hier Threads auf gelöst setzen oder hat phpBB die Funktion nicht?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ok, dann fassen wir mal zusammen: Die Lösung war die Änderung des Skriptablaufs.
Gelöst.
Gruß, noisefloor
ok, dann fassen wir mal zusammen: Die Lösung war die Änderung des Skriptablaufs.
Gelöst.
Gruß, noisefloor