Bei refresh startet skript neu
MarcoH
- perl
Hallo. Eine frage. Ich habe ein perl programm geschrieben das einem kleinen Chat ähnelt. Man muss mittels input die Nachricht eingeben dann geht die nachricht in eine datei und die datei wird ausgelesen. Nun wenn ich den submit klicke wird das input feld leer und die nachricht erscheint. Wenn ich jedoch den Browser aktualisiere wird die nachricht neu in die Datei schrieben obwohl vor dem refresh durch das klicken des submit button das input feld gelehrt wurde.
Was kann ich dagegen machen das es trotz F5 nur einmal abgesendet wird? Eine if abfrage die prüft ob das input feld leer ist klappt auch nicht?
Was kann ich dagegen machen das es trotz F5 nur einmal abgesendet wird? Eine if abfrage die prüft ob das input feld leer ist klappt auch nicht?
Löse das Problem auf dem Server, nicht auf einem Browser.
mfg Beat
Probiere gerade auf dem apache lokal webserver rum aber ok ich bräuchte nur noch einen anhaltspunkt wie ich anfangen sollte beziehungsweise an was ich da achen und arbeiten muss??
danke!
Probiere gerade auf dem apache lokal webserver rum aber ok ich bräuchte nur noch einen anhaltspunkt wie ich anfangen sollte beziehungsweise an was ich da achen und arbeiten muss??
Dein Skript weiss besser, was duplizierte Posts sind. Solche sind schlicht nicht zu schreiben.
Das kann auf verschiedene Weise gewährleistet werden. Wenn ein md5 hash jedes Posts gelogged wird, lässt sich das schnell kontrollieren.
Falls es doch notwendig sein kann, das man wiederholt den gleichen Text zu unterschiedlichen zeiten schreibt ('Hallo') kann es auch ein Feld sein, das eine vorgenerierte Seriennummer erhält. Duplikate kannst du dann abfangen.
mfg Beat
Hallo und dankeschön.
Es meldet sich gerade der noob in mir ;-)
md5 ist doch ein verschlüsselungs ding für passwörter? Was macht das für ein sinn wenn ich die Nachricht oder den Namen verschlüssel?
Bei deinem letzten abschnitt kann ich dir nicht mehr folgen. Kannst du es mir bitte noobgerecht erklären? ;-)
habe schon mit cookies probiert was natürlich nicht viel brachte. Habe auch versucht die eingabe mit der letzten eingabe zu vergleichen aber das ist auch nicht das wahre?
Hallo und dankeschön.
Es meldet sich gerade der noob in mir ;-)
md5 ist doch ein verschlüsselungs ding für passwörter? Was macht das für ein sinn wenn ich die Nachricht oder den Namen verschlüssel?
md5 oder sha1 sind primär Checksummen über beliebig lange Texte. Die Checksummen sind hinreichend lange um unter normalen Umständen keine Kollisionen [1] zu erzeugen.
Der Vorteil ist, sie haben immer gleiche Zeichen-Länge und bestehen aus einer Zeichenklasse, die sich viel einfacher parsen lässt als ein X-beliebiger Text, den ich auf Bitweise Identität mit einem anderen Text überprüfen will.
Bei deinem letzten abschnitt kann ich dir nicht mehr folgen. Kannst du es mir bitte noobgerecht erklären? ;-)
Das wäre die bilige Variante.
Du schreibst in jedes Formular ein Feld mit einem Schlüssel. Das kann eine zahl sein, ein Datum oder irgendwas. Es kann auch eine der oben genannten Checksummen über die Uhrzeit sein. Wird dieses Feld zweimal gesendet, so ist eben das gleiche Formular zweimal abgeschickt worden.
Der Unterschied ist hier, dass hierbei Formularrequests identifiziert werden, während im Falle der Checksumme über einen geposteten Inhalt auf identische Inhalte überprüft wird.
Was angemessen ist, musst du selbst wissen.
habe schon mit cookies probiert was natürlich nicht viel brachte. Habe auch versucht die eingabe mit der letzten eingabe zu vergleichen aber das ist auch nicht das wahre?
Ja du kannst natürlich nebst der SessionID als Cookie auf eine Art RequestNr-Zähler pro User als zweites Cookie senden. Das hat dann den gleichen Nutzen wie ein Formularfeld, ist aber universeller einsetzbar.
[1] sollten zwei verschiedene Strings die gleiche Checksumme erzeugen, spricht man von einer Kollision.
mfg Beat
habe schon mit cookies probiert was natürlich nicht viel brachte. Habe auch versucht die eingabe mit der letzten eingabe zu vergleichen aber das ist auch nicht das wahre?
Ja du kannst natürlich nebst der SessionID als Cookie auf eine Art RequestNr-Zähler pro User als zweites Cookie senden. Das hat dann den gleichen Nutzen wie ein Formularfeld, ist aber universeller einsetzbar.
Das war ein blöder Tipp.
mfg Beat