Zum Inhalt springen

Problem: pro Refresh ein POST


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

folgendes Problem.

Ich habe eine Jsp-Page, die ein Formular enthält und dieses an sich selbst POSTET.

Nun ist es so, dass wenn ich nachdem die Seite neu geladen, wurde den REFRESH-Button drücke, wird mein POST erneut ausgeführt.

Gibt es eine Möglichkeit, den Post nur einmal auszuführen, egal wie oft man die Seite refresht?

Hab schon folgendes ausprobiert:

<body onunload="javascript:window.location=window.location.href">

...

So wird der POST nur noch beim ersten REFRESH ausgeführt, das reicht aber nicht.

:confused:

HIILLFFEE !!!

Geschrieben

Hi Jaraz,

wie meinst du das?

Soll ich die POST-Variablen(Inhalte der Felder) dort ablegen?

Es kann passieren, dass ich innerhalb einer Session den gleichen Post mache.

Es handelt sich bei der Sache um ein Forum.

Bsp.:

Wenn ich im Forum bin und jemand hat eine Frage gestellt, die ich nun mit einem einfachen Ja beantworte.

Daraufhin stellt er noch eine Frage, die ich wieder mit Ja beantworte.

Dann würde das nicht funzen.

mfg

EDA-One

Geschrieben
Originally posted by EDA-One

Wenn ich im Forum bin und jemand hat eine Frage gestellt, die ich nun mit einem einfachen Ja beantworte.

Daraufhin stellt er noch eine Frage, die ich wieder mit Ja beantworte.

Wenn du auf eine Frage antwortest, gibst du dem Formular eine eindeutige ID mit. In einem hidden Feld, oder in der URL.

Beim speichern, schreibst du die ID in die Session. Wenn er nun mit dieser ID noch mal speichern will, blockst du das. Bei einer erneuten Antwort, bekommt er ein Formular mit einer anderen ID.

Gruß Jaraz

Geschrieben

Hi,

habs doch noch viel einfacher gelöst. :)

Die Script-Funktion ( window.location = window.location.href ) war schon nich schlecht, hatte sie nur falsch eingebaut.

Nun ist es so, dass sie aufgerufen wird, wenn der POST "empfangen" wird.

So wird die browserinterne URL durch die der Adresszeile ersetzt und da bei einem POST die Variablen nicht in der Adresszeile stehen, funzt der ganze Spass.

Trotzdem Danke für deine Tips !!!!

Ciao

EDA-One

Geschrieben

Du blockst also auf dem Client etwas, das auf dem Server nicht passieren soll.

Ich hoffe das ganze ist nur für dich privat und du willst es nicht verkaufen.

Was ist denn wenn jemand kein Javascript benutzt?

Gruß Jaraz

Geschrieben
Originally posted by Jaraz

Wenn du auf eine Frage antwortest, gibst du dem Formular eine eindeutige ID mit. In einem hidden Feld, oder in der URL.

Beim speichern, schreibst du die ID in die Session. Wenn er nun mit dieser ID noch mal speichern will, blockst du das. Bei einer erneuten Antwort, bekommt er ein Formular mit einer anderen ID.

Gruß Jaraz

... ja das ist wirklich die beste Lösung :uli

Javaskript gehört in keine CGI-Application.

Wenn jemad javaskript ausschaltet, kann er Dir das Forum mal in binnen 10 Min mit 2000 Einträgen Vollmüllen :rolleyes:

Für Skriptkidis heist das "Flooding"

Es gibt nämlich nicht nur gutartige Forumbesucher.

Es ist trivial und Sicher...

Jeder Post (Jedes Formular) bekommt eine Unique ID .

Als hidden Field oder im Query String.

Beim speichern des Posts Sperrst Du die Unique ID.

d.H. ein erneuter post (also Refresh oder Browser zurück mit erneutem Post-Click) mit dieser ID ist nicht möglich.

Denn wenn Du eine Bereits gesperrte ID im Forumlar entdeckst = no Go

Die Id kann eine Zufallszahl, Sesionid, Time etc. sein.

Auf meiner Seite habe ich das verbastellt, und es funzt.

So eine Komponente zu Bastelln beim Forumbau lohnt sich! Denn so eine Komponente, könnte bei vielen Postformularen zum Einsatz kommen (GB,Mail,Messager bla bla).

Wenn das zuviel Hackmack ist, kannst Du im HTTP-Header ein

Location: http://deineSeite/forum/forum.jsp\n\n

anstatt

Content-type: text/html\n\n

.

.

.

absetzen.

Dann sind direkte refresh nach Posts kein Killer mehr.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...