 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
01.03.2002, 23:25
|
#1
|
|
TP-Specialist
Registriert seit: Feb 2002
Ort: Wien
|
Zurück-Button wenn Formular abgesendet wurde
Ich habe ein Problem mit dem Zurück-Button im Browser bei PHP-Seiten, die Parameter über ein Formular erhalten haben. Beim Klicken auf den Zurück-Button bekommt man im Browser die Meldung: Achtung, die Seite ist nicht mehr gültig... Danach muss man auf aktualisieren klicken, damit die Formulardaten noch einmal an die Datei übergeben werden. Bei meinem Skript werden jedoch Datensätze generiert, die dann noch einmal in die mysql-DB geschrieben werden.
Außerdem ist die Fummelei dem Surfer aus Usability-Sicht nicht zuzumuten.
Hat jemand von euch eine Lösung für das Problem, außer ein neues Javascript-Fenster ohne Buttonleiste?
Jürgen
|
|
|
02.03.2002, 09:54
|
#2
|
|
TP-Veteran
Registriert seit: Apr 2001
Ort: Münster und gerade aus Brisbane
|
wäre es eine idee, wenn du selber einen zurück-button auf die seite machst und darauf einen link zurück zu der seite, damit die so generiert wie du möchtest?
dann sind die besucher dazu veranlagt, diesen zu benutzen. Poste mal den skript vielleicht gibt es auch eine bessere lösung weil die ist nur so 0-8-15 auf Glück
|
|
|
02.03.2002, 09:58
|
#3
|
|
TP-Supporter
Registriert seit: May 2001
Ort: Berlin
|
Die einzige Lösung für dieses Problem, die ich bis jetzt gefunden habe besteht darin, vor dem Absenden ein Cookie zu schreiben und auf beim Laden bzw. Neuladen zu überprüfen, ob dieser Cookie geschrieben wurde, wenn ja, wird sie nicht mehr angezeigt und der Code zum Schreiben der DB nicht nocheinmal ausgeführt.
Oder anstatt des Cookies mit Sessions arbeiten und eine entpsrechende Statusvariable setzen.
|
|
|
02.03.2002, 10:19
|
#4
|
|
TP-Insider
Registriert seit: Feb 2001
|
warum löscht du nicht die formularvariablen und setzt im falle v. leeren Variablen eine weiterleitung a la Location ?
Dann werden zum einen deine Daten nicht mehr in die Datenbank geschrieben und zum anderen wird der user gleich auf eine andere Seite weitergeleitet.
mfg dares
__________________
ich bin krebs erregend - wer ist krebs?
|
|
|
02.03.2002, 13:28
|
#5
|
|
TP-Supporter
Registriert seit: May 2001
Ort: Berlin
|
das funktioniert ?
wenn man aktualisiert, nehmen die Variablen doch wieder die alten Werte an (wenn keine Session Variablen)
|
|
|
02.03.2002, 17:02
|
#6
|
|
TP-Supporter
Registriert seit: Mar 2001
Ort: Coburg / Bayern
|
hi,
ich mach das immer folgendermaßen mit Sessions und PHP ...
In der Ausgangsseite (Formular) wird überprüft, ob die Variable "neuladen" in der session registriert ist. Ist das nicht der Fall, dann wird eine txt Datei mit Javascript includet, welche einen Reload der Seite bewirkt. Anschließend wird die Variable "neuladen" registriert, damit die Seite nicht ständig von Neuem geladen wird.
In der (oder den) auf das Formular folgenden Seiten wird zu Anfang erstmal die Variable "neuladen" aus der session entfernt.
Klickt der User nun den Back Button, so wird wie oben bereits beschrieben, wegen der fehlenden Variablen "neuladen" die Ausgangseite zunächst neugeladen.
Problem gelöst
Ist vielleicht nicht die geschickteste Lösung aber es funktioniert bei mir zumindest immer einwandfrei
Gruß
SMURF
|
|
|
02.03.2002, 22:27
|
#7
|
|
TP-Specialist
Registriert seit: Feb 2002
Ort: Wien
|
Hallo und danke an euch alle für die Antworten,
@jph2000: Ich habe auf meinen Seite einen Zurück-Button, das Problem ist nur, dass die User von Webseiten fast immer den Zurück-Button des Browsers benutzen - eh klar, weil sie den gewohnt sind. Das Problem dabei ist die Meldung des Browsers - die bekomm ich nicht weg.
Mit der session-Variable "neuladen" kann ich das erneute Schreiben in die db verhindern - aber die Meldung des Browsers, dass an diese Seite Formulardaten übergeben wurden, die krieg ich damit nicht weg - richtig? Das irritiert aber die Benutzer gewaltig, dass sie zuerst auf "Aktualisieren" klicken müssen, bevor letzte Seite wieder geladen wird.
Wie kann man also dem Browser beibringen, in jedem Fall beim klicken auf den Zurück-Button die letzte Seite zu laden, und zwar ohne die lästige Meldung?
Grüße,
Jürgen
|
|
|
02.03.2002, 22:44
|
#8
|
|
TP-Supporter
Registriert seit: Mar 2001
Ort: Coburg / Bayern
|
hi,
also bei mir funktioniert das mit der session einwandfrei, ohne dass die Meldung der ungültigen Seite erscheint. Du darfst nicht vergessen das Reload Java Script zu includen!!!
sollte eigentlich keine Probleme geben
Gruß
SMURF
|
|
|
02.03.2002, 22:58
|
#9
|
|
TP-Specialist
Registriert seit: Feb 2002
Ort: Wien
|
Hi, Smurf!
Also, wenn du das sagst, dann mach ich das glatt. Vielen Dank für den Tipp!
Eines würde ich aber daran gerne verstehen: woran erkennt der Browser, dass Formulardaten an die Seite übergeben wurden? Ich dachte, das wird ihm im HTTP-header mitgeteilt. Und diesen lädt er doch, bevor das Javascript die Zurück-Button wenn Formular abgesendet wurde kann. Warum kommt dann die Meldung nicht? Blickst du da durch?
Jürgen
|
|
|
02.03.2002, 23:02
|
#10
|
|
TP-Moderator
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
|
Hi !
Also ich lese ja brav mit, und mach mir auch so meine Gedanken. Das Problem hatte ich auch schon des öffteren, habe aber keine direkte Lösung gefunden, außer mit Session-Variablen. Die Meldung vom Browser hab ich auch nie wegbekommen.
ABER... es muß irgendwie gehen! Nehm einfach mal als Beispiel die Suche hier im Forum. Wenn man seine Daten abschickt, kommt man auf eine Zwischenseite, die die Daten erhält und die Suche tätigt und diese dann als Datensatz in die DB legt. Dann leitet die Seite weiter auf die Ergebnisseite.
Wenn man hier aber jetzt zurück klickt kommt die besagte Meldung NICHT!
Die Seite wurde doch auch durch einen Post erstellt, und dürfte somit doch auch nicht mehr aktuell sein... ???
...aber warum? Ich hab schonmal ein bischen im Quelltext gewühlt, aber auf die Schnelle nix gefunden... :\
Das mit dem reload per JavaScript könnte klappen... JavaScript greift doch eher auf den Cache zu und sendet daher die Daten nicht neu, oder? Aber wie bekommst du das Script zum Browser?? Bei mir erscheint auch immer die Meldung. Und bevor die Seite angefordert wird, kann ich doch kein JavaScript includen?!
SMURF könntest Du nicht mal ein kleines Beispiel basteln und das hier posten?? Damit wäre glaube ich vielen geholfen  Und würde die Sache vielleicht sogar vereinfachen.
Gruß Jan
|
|
|
03.03.2002, 13:51
|
#11
|
|
TP-Supporter
Registriert seit: Mar 2001
Ort: Coburg / Bayern
|
hi!
also ihr habt Recht meine erste "Lösung" hat nicht funktioniert  . Dass es bei mir trotzdem geklappt hat hatte andere Gründe.
Aber ich habe ein wenig überlegt und eine andere Lösung gefunden.
Das ganze funktioniert mit Hilfe einer Zwischenseite, die zwischen Formular und Ausgabeseite gesetzt wird und als Weiche fungiert.
1. Formularseite wird an sich selber abgesendet. Dabei wird eine "go-variable" übergeben.
2. Wenn die "go-variable" existiert registriert die Formularseite die Variablen (Input Felder) in einer Session. Zusätzlich wird noch eine "buffer-variable" registriert. Anschließend wird entweder per php header oder wenn der output schon verbraucht ist mit includetem JavaScript auf die Zwischenseite (z.B. buffer.php) umgeleitet.
3. Die Buffer Seite prüft ob die "buffer-variable" registriert ist, wenn ja wird auf die Ausgabeseite umgeleitet (innerhalb der Ausgabeseite muss nun die "buffer-variable" aus der Session gelöscht werden). Existiert die "buffer-variable" nicht, so wird auf die Formularseite umgeleitet.
fertig! *stolz*
Ist natürlich etwas umständlich aber es funktioniert!
Gruß
SMURF
|
|
|
03.03.2002, 14:34
|
#12
|
|
TP-Specialist
Registriert seit: Feb 2002
Ort: Wien
|
Hi Smurf!
Das ist wirklich eine ausgeklügelte Sache. Ich werde das heute ausprobieren. Ich muss das zwar in einer abgewandelten Form verwenden, da ich in dem besagten Bereich mit includes arbeite und daher immer in derselben Datei unterwegs bin, aber ich glaube das tut nichts zur Sache.
Ich hoffe nur, dass der Browser nicht meckert, wenn die Seite, welche die Formulardaten erhalten hat statt mit dem Zurück-Button eben mit dem location-header angesprochen wird. Aber es wird sich weisen...
Danke für die Mühe. Ich melde mich nochmal, obs geklappt hat.
Grüße,
Jürgen
|
|
|
05.03.2002, 01:03
|
#13
|
|
TP-Specialist
Registriert seit: Feb 2002
Ort: Wien
|
Ich habe das jetzt ausprobiert und es funktioniert tatsächlich, sogar einfacher, als es Smurf ausgetüftelt hat:
Das Formular ruft direkt per POST die Datei buffer.php auf. Dort werden die Variablen in Sessionvariablen registriert und sofort per location-header auf die Ausgabeseite weitergeleitet, wo die Datenbankupdates bzw. inserts gemacht werden.
Da der Browser von der buffer.php nichts mitbekommt - er kriegt ja nur die Ausgabeseite geschickt - und im header der Ausgabeseite nicht angegeben ist, dass die Seite Formulardaten erhalten hat (die kommen ja von der Session), funktioniert auch der Zurück-Button ohne murren.
Trotzdem bin ich noch nicht glücklich, denn wenn während der Registrierung der Sessionvariablen ein Fehler auftritt, wird eine Meldung an den Browser geschickt -> damit bleibt das Werkel stehen, da die header ja schon geschickt wurden...
Ist wohl noch nicht der Weisheit letzter Schluß.
Vielen Dank, Jürgen
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
|
 |