Variablen (Sessions - Formulare) überschreiben

ludz

Erfahrenes Mitglied
Ich speichere eine Benutzer-ID in einer Session (Variable $bid).
Wenn ich nun auf irgendeiner Seite ein Formular verwende, das ein Feld enthält, das auch "bid" heißt, so wird nach dem Abschicken die Variable in der Session überschrieben.
Wenn ich also jetzt meine Variable anzeigen lasse, also egal ob $bid oder $_SESSION['bid'], dann wird der Wert angezeigt, der in dem Formularfeld angegeben wurde... (daran sehe ich ja, dass die ursprüngliche Variable in der Session überschrieben wurde).
Woran kann das denn liegen? Ich registriere doch die Variable später gar nicht mehr in der Session (session_register("bid");)?!
Hängt es damit zusammen, dass register_globals=on ist?
Im Moment löse ich das Problem, indem ich keine Variablen in meinen Skripten mit Namen $bid mehr vorkommen lasse. Aber irgendwas stimmt da doch nicht, oder?
 
Wenn ein Wert eines Feldes mit dem Namen bid übergeben wird, dann wird natürlich der Wert Deiner Sessionvariable überschrieben/aktualisiert!
Dem kannst Du natürlich nur aus dem Wege gehen, indem Du auf die Namensgebung "bid" im weiteren Verlauf verzichtest.
 
Zur Ursache wurde hier ja schon was gesagt, aber insgesamt sollte man darauf achten, dass Variablennamen nicht doppelt belegt werden. Das führt auf Dauer nur zu ärger. Um sowas von vorne herein möglichst zu vermeiden, sollten Variablennamen à la $value oder $name eigentlich vermieden werden und statdessen aussagekräftigere verwendet werden, wie z.B. $login_name oder ähnliches. So geht man jeder Menge Problemen aus dem Weg und wundert sich dann nachher nicht, warum in einer Farbvariablen, statt einem Hex-Wert der Name einer anderen Variable steht :rolleyes: ;)
 
Zurück