Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problem: pro Refresh ein POST

Empfohlene Antworten

Veröffentlicht

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 !!!

Hi,

du musst eine Variable in der Session bei jedem request überprüfen, aber nur beim ersten setzen.

So kannst du dann den ersten request von folgenden unterscheiden.

Gruß Jaraz

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

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

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

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

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.

Na gut,

ihr habt mich überzeugt.

Script ist bloß immer so verlockend.

Werds die Tage mal ausprobieren.

Bis denne

EDA-One

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.