phpbar.de logo

Mailinglisten-Archive

[php] Firefox und Input Value (1/2 OT)

[php] Firefox und Input Value (1/2 OT)

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Sep 29 23:50:39 CEST 2006


Hallo Andreas,

Am Freitag, 29. September 2006 19:02 schrieb Andreas Kempf:
> Hallo allerseits,
>
> habe ein obskures Problem mit Firefox-Usern. Zuerst dachte ich, es
> wäre ein Session/Cookie-Problem, doch da Session und Cookie nach dem
> Logout definitiv geleert werden, zudem das mit dem IE nicht
> reproduzierbar ist, der Quelltext ebenfalls das Problem nachweist,
> gehe ich davon aus, dass es am FF liegt.
>
> Folgende Situation:
>
> Der Fehler tritt auf, wenn unterschiedliche User am gleichen Rechner
> sitzen oder man zwei oder mehr Profile hat. Das ganze auf einer
> Plattform, auf der Email und Passwort als Login benutzt werden
> (Felder im Login-Form haben allerdings einen anderen Namen).
>
> - Man loggt sich mit Profil A ein
>
> - Man ändert und speichert das Profil A. Gleichzeitig wird/wurde
> Firefox erlaubt, das Email und das Passwort der Eingabefelder im FF-
> Formular-Cache (oder wie das heisst) zu speichern.

ist das nicht schon die Erklärung für Dein Problem, daß Feldwerte im 
FF-Formular-Cache gespeichert werden dürfen?

Wenn Du dem IE das Speichern der Formularwerte erlaubst, was passiert 
denn übrigens dann?

> - Dann loggt man sich aus und loggt sich neu als User B ein.
>
> - Dann geht man in das B-Profil um es zu ändern und sieht plötzlich
>   Email und (als Sternchen) das Passwort vom A-Profil! Öffnet man den
>   Quelltext sieht man, dass eigentlich die Werte von B (also die
>   richtigen) in den Feldern stehen sollten, trotzdem werden die Werte
>   von A angezeigt (Passwort natürlich als Sternchen). Wenn man genau
>   hinschaut, sieht man beim Reload sogar, dass zuerst das B-Email und
>   eine 1/10 Sekunde später das A-Email erscheint.
>
> Ja, ich weiss, Unique Indices in den DB-Feldern würde zumindest ein
> Speichern unterbinden, doch ist es dazu jetzt zu spät (33.000
> Member).

Warum sollte es dafür zu spät sein? :-) Guck doch erstmal, wieviele 
Doppelungen es gibt und ob sich die beheben ließen... Laß Dich nicht 
von der Zahl 33.000 abschrecken. Vielleicht hast Du ja nur 300 
Doppelungen. Es können natürlich auch ein paar Tausend sein, aber guck 
erstmal. Und eventuell fällt Dir ja doch eine Lösung ein.

> Was kann man da tun?

Also wenn Du das Problem eingrenzen und ermitteln kannst, wie ein 
solcher Formular-Cache im FF und IE funktioniert, dann findet sich 
bestimmt eine Lösung.

Annahme 1:
Der Formular-Cache würde die Formularwerte auf der Basis einer URL 
speichern. In diesem Fall würde es vielleicht reichen, einen 
benutzerspezifischen Parameter in die URL einzubauen.

Annahme 2:
Du findest keinen direkten Anhaltspunkt. Dann könntest Du versuchen, die 
Formularfelder benutzerspezifisch zu benennen, z.B. durch das Einbauen 
der Benutzer-ID in den Feldnamen. Das ginge z.B. so: <input type="text" 
name="irgendwas[23]" ...>, wobei 23 die Benutzer-ID wäre. Dann könntest 
Du im PHP-Skript anschließend $_REQUEST['irgendwas']['23'] in 
$_REQUEST['irgendwas'] umsetzen und könntest ganz bequem mit den Werten 
weiterarbeiten. Die Benutzer-ID käme nur beim Einsetzen der Feldnamen 
ins Spiel und würde anschließend nach der Parameter-Übergabe sofort 
wieder entfernt.

Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive