AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Weiterleitung beim Absenden eines Formulars
Thema durchsuchen
Ansicht
Themen-Optionen

Weiterleitung beim Absenden eines Formulars

Ein Thema von Matze · begonnen am 16. Sep 2007 · letzter Beitrag vom 16. Sep 2007
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 14:44
Hallo,

auf meiner Website ist es so, dass man Dinge kommentieren kann. Nach dem Absenden des Kommentars sieht man ohne lange Wartezeit die Meldung über den erfolgreichen Eintrag. Das funktioniert einwandfrei, hat jedoch den Nachteil, dass beim Aktualisieren der Seite (F5) die Formulardaten neu gesendet werden. Das merkt man daran, dass die Browser einen darüber mit einem entsprechenden Dialog informieren und nachfragen, ob die Daten erneut gesendet werden sollen.
Momentan ist die Weiterleitung mittels der PHP-Funktion header() gelöst.

Auf eine Wartezeit und somit eine HTML-Weiterleitung möchte ich verzichten. Eine AJAX-Lösung, die ich spaßeshalber getestet habe, funktionierte problemlos, doch AJAX bzw. JS allgemein möchte ich dafür nicht verwenden.

Wie löst man das Problem sauber?

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 14:47
Hallo Matthias,

vielleicht hilft Dir dies hier weiter.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 14:56
Hallo Deddy,

danke für den Link. Wenn ich das richtig sehe, wird auf die vorige URL weitergeleitet, jedoch ein Parameter angehängt, durch dessen Abfrage man unterscheidet, ob die Daten neu gespeichert werden sollen oder nicht.
Das wäre natürlich eine Möglichkeit, doppelte Einträge in der Datenbank zu verhindern (wobei ich auch einen eigenen Hinweis bei doppelten Einträgen ausgebe und die damit vorbeuge), doch ein Browser würde mir dennoch den Dialog zeigen, was ich nicht sonderlich benutzerfreundlich finde, da es auf den ersten Blick nach einem Fehler aussieht, den man wegklicken muss.

Geht das denn auf diesem Wege gar nicht anders?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#4

Re: Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 16:23
Hallo Matthias,

wenn ich das richtig sehe, ist das ein rein clientseitiges Problem. Der Browser behält die Request-Daten in seinem Cache und fragt deshalb bei Aktualisierung nach. Ich denke nicht, dass sich das auf der Serverseite verhindern lässt, aber ich kann mich auch irren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 16:45
Was ist eigentlich, wenn du eine Seite dazwischen schaltest, die die Daten verarbeitet?
Also:
- Seite mit Formular (a.php)
- Formular wird abgeschickt mit Ziel Zwischenseite (b.php)
- Zwischenseite (b.php) wertet die Daten aus, trägt sie in die DB ein oder macht sonstwas damit
- Zwischenseite leitet auf die Anfangsseite (a.php) weiter (header)

Der Benutzer sollte die Zwischenseite eigentlich garnicht bemerken. und auf der eigentlichen Seite werden keine Daten mehr übergeben. Also sollte beim aktualisieren auch nicht mehr die vermeidliche Fehlermeldung erscheinen.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
sexmagic

Registriert seit: 16. Sep 2006
56 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 18:05
Ich würde einfach bei der Überprüfung des Querys oder was auch immer direkt in den if block ein "meta refresh" oder ein "header location" einsetzten, das direkt nach dem ausführen des Befehls auf eine andere Seite weiterleitet.

Somit ist der User sofort nach dem ausführen des Commands auf einer anderen Seite dort zeigst du dan zb an Daten erfolgreich eingetragen.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Weiterleitung beim Absenden eines Formulars

  Alt 16. Sep 2007, 19:10
Zitat von sexmagic:
[...] oder ein "header location" [...]
Genau das dachte ich, habe ich so gelöst. Doch dies war nicht der Fall, sondern ich hatte es über action="" realisiert. Ich habe dann erfahren, dass man action generell setzen sollte und mit ein paar Änderungen funktioniert es über header() nun. Mein Ausgangsproblem war folglich von mir falsch beschrieben. Aber ihr hab's gar nicht gemerkt.

Danke euch allen.
  Mit Zitat antworten Zitat
Antwort Antwort


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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz