PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : browsercache



lutzilein
28-10-2002, 16:13
huhu
folgende Frage:

Ich habe ein Kontaktformular oder irgendeine Eingabeseite.(in php)
Diese Daten werden dann per submit an ein anderes phpformular geschickt.

So wenn ich nun im browser auf zurück gehe,
stehen da noch die eingegebenen Daten von mit drin.

So nun die Frage:
Wie kann ich das verhindern?
Ich möchte also das nachdem die Daten verschickt wurde
alles löschen.

Ich hoffe ich habe das Problem verständlich gemacht?




:confused:

JoelH
28-10-2002, 16:54
mir ist da nix bekannt, denn php ist ja serverseitig und ich dneke nicht dass man von enfernter Stelle den Browsercache löschen könnte, wäre ja noch schöner.

Pingu
28-10-2002, 17:22
Naja, vielleicht ist das eine Lösung: Manche Browser (z.B. Mozilla) können, bei Seiten, die sie als Resultat eines POST-Requests erhalten haben nicht einfach zurück gehen. Da kommt dann immer die Abfrage, ob der POST-Request wiederholt werden soll. Damit wären dann natürlich auch die Eingaben verloren. Also folgende Reihenfolge:

GET-Request: normale Seite -> link auf Eingabeseite als POST-Request
POST-Request: Eingabeseite -> Absende Button auf Bestätigung (oder was auch immer)
GET/POST-Request: Bestätigung

Wie gesagt, damit sollte es vielleicht funktionieren. Am besten man gibt noch Anweisung im Header aber auch im HTML-Header mit, die bewirken, daß der Browser nicht cachen soll.

Ob das für alle Browser funktioniert weiß ich nicht.

-= Pingu =-

PS: Sorry für meine schlechte Grammatik, aber meistens denke ich so verquer und bin dann zu blöd zum Ausdrücken; dafür das Beispiel.

lutzilein
28-10-2002, 18:36
Danke für die Antworten.
Ich bring vielleicht nochmal ein Beispiel:

Ich habe ein z.b. ein Gästebuchformular.
Hier wird eine Variable übergeben. (z.b. ne ID)
So, wenn der Besucher einen Eintrag macht wird die ID übergeben.
Wenn der Besucher in seinem Browser auf "zurück" geht,
hat es ja seine eingegebenen Daten wieder mit der gleichen ID.
Sendet er die Daten wieder habe ich zwei Einträge.
(Lösung wird wahrscheinlich sein die id zu überprüfen auf vorhanden sein)


Ist das normal so? bzw. der Normalfall?

Gaert
29-10-2002, 08:09
Ja das ist normal...
dieses Verfahren ist ein einfacher (aber wirksamer) Spamschutz...
Gästebücher, oder Foren die nicht auf diese (oder andere) Weise geschützt werden könnnen z.B. durch X-maliges F5 Taste - Enter Gedrücke, total zugespammt werden.

Eine gute UniqueID für einen solchen Fall wäre

$id = md5(uniqid(rand(),1));

exe
05-11-2002, 13:41
@lutzilein
Ich hab das zum Teil einfach über einen Hash gelöst. Einfach einen md5() auf den Gästebucheintrag plus Namen und mit in der Datenbank gesichert.

Bei einem Neueintrag wird prüfe ich den neuen Hash einfach dagegen, wirkt Wunder. :)

Gaert
05-11-2002, 15:12
Hallo exe...

Es kann trotzdem mal vorkommen, dass ein User mal den Gleichen Eintrag doppelt schreibt, gerade wenn dein Gästebuch auch mal als "Chatboard" miß-/gebraucht wird.
Ausserdem könntest du dir den md5() Eintrag sparen, weil du ja auch direkt User und Eintrag in mit der Datenbank vergleichen könntest.
Ausserdem würde ich dann halt nich "Backspace - F5" drücken um zu spammen sondern "Backspace - beliebigetaste - F5".

In dem Fall ist die oben beschriebene Methode wirklich besser, weil du damit fast 100% ausschließen kannst, daß es eine doppelte ID gibt.

exe
05-11-2002, 15:49
Naja das mit dem doppelten Eintrag eines Users ist aber sehr unwarscheinlich denke ich. Ich denke der md5() dürfte performanter sein, aber naja - auf ein paar Millisekunden kommt es nicht wirklich an. Generell ist die Lösung über IDs ein passabler Weg.

Mal im ernst, es gibt _keine_ Möglichkeit spamen sinnvoll zu verhindern (ein Blocking auf die IP ist z.B. völliger Quark). Ein potentieller Angreifen kann dich immer spamen. Deine Methode mit dem Tastaturgedrücke ist da noch die harmloseste Variante.

Es gibt IMHO eine einzige Möglichkeit Spaming (automatisiert oder manuell) zu verhindern, aber die ist für die echten User sehr unangenehm. Du kannst Dir per GD lib oder Image Magick ein Bild erzeugen mit einer Zeichenkette drin z.B. "4CfHt" und vom User verlangen diese abzutippen. Aber das ist schon ein wenig arg hefig. Ich merk schon ich werde OT :)