EDA-One Geschrieben 19. Dezember 2002 Geschrieben 19. Dezember 2002 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 !!! Zitieren
Jaraz Geschrieben 19. Dezember 2002 Geschrieben 19. Dezember 2002 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 Zitieren
EDA-One Geschrieben 19. Dezember 2002 Autor Geschrieben 19. Dezember 2002 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 Zitieren
Jaraz Geschrieben 19. Dezember 2002 Geschrieben 19. Dezember 2002 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 Zitieren
EDA-One Geschrieben 20. Dezember 2002 Autor Geschrieben 20. Dezember 2002 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 Zitieren
Jaraz Geschrieben 20. Dezember 2002 Geschrieben 20. Dezember 2002 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 Zitieren
Chris0 Geschrieben 20. Dezember 2002 Geschrieben 20. Dezember 2002 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 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. Zitieren
EDA-One Geschrieben 20. Dezember 2002 Autor Geschrieben 20. Dezember 2002 Na gut, ihr habt mich überzeugt. Script ist bloß immer so verlockend. Werds die Tage mal ausprobieren. Bis denne EDA-One Zitieren
Empfohlene Beiträge
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.