Hi,
ich hab eine php-Applikation, bei der ich einem Nutzer virtuelles Geld gutschreiben kann. Neuerdings wurde das Geld immer doppelt gutgeschrieben und das, obwohl ich Mechanismen eingebaut habe, die es über die Session verhindern, daß ein method-post-Formular zweimal abgeschickt werden kann.
Wie sehen diese Mechanismen aus?
Jetzt habe ich in den Apache-Logs gesehen, daß dieses Formular zweimal parallel vom IE8 abgeschickt wird und php noch nicht die Zeit hatte, um nach Abarbeiten des Formulars den Schutz für erneutes Absenden zu setzen.
Die Posts sind immer doppelt, allerdings nur mit dem IE8(Final):
127.0.0.1 - - [31/Mar/2009:14:57:25 +0200] "POST /foo.php HTTP/1.1" 200 7743
127.0.0.1 - - [31/Mar/2009:14:57:25 +0200] "POST /foo.php HTTP/1.1" 200 7743
Nur weil sie zur gleichen *Sekunde*, die in der Datenverarbeitung immer noch ein verdammt langer Zeitraum ist, reinkommen, werden sie trotzdem nicht "parallel" abgearbeitet, sondern sequentiell.
Wie das Locking der Sessiondatei hierbei versagen soll, kann ich mir gerade nicht vorstellen.
MfG ChrisB
Light travels faster than sound - that's why most people appear bright until you hear them speak.