phpbar.de logo

Mailinglisten-Archive

[php] Vom versuch, blind Sessions zu kapieren.

[php] Vom versuch, blind Sessions zu kapieren.

Thorsten Gebuhr php_(at)_phpcenter.de
Sat, 19 May 2001 10:42:40 +0200


Hallo Marco,

Marco Seimer schrieb:

> $gnorf=0;
> <a href="bla.php?gnorf=30">weiter</a>
>
> Wenn bla.php wieder aufgerufen wird, ist $gnorf auch 30, aber sobald
> session_start() aufgerufen wird, wird auch $gnorf mit dem alten wert
> überschrieben. Dabei soll $gnorf, den Wert in der Session
> überschreiben.
>
> Ich glaube ich habe sessions einfach falsch bis garnicht verstanden :(
>

Ja - scheint fast so - als solltest du mal kurz auf Abstand gehen - und
mal drüber schlafen.


Sessionvariablen sind sowas wie "globale" Variablen über all deine
Scripte, die zur Session gehören.
Was du in der URL (per GET) übergibst ist eine "scriptlokale" Variable.

Beim Aufruf des Scriptes wird die Varibale $gnorf von PHP erzeigt und
auf den Wert 30 gesetzt.
Startest du jetzt im Script die Session heißt das soviel wie: Ab jetzt
gelten alle in der Session registrierten "globalen" Variablen.
Dabei geht dir die "lokale" Variable $gnorf verloren und wird durch die
"globale" ersetzt - die natürlich den alten Wert hat.

Also - falls du den Wert von $gnorf noch anderweitig in der Session
brauchst (ohne Übergabe per URL) würde ich dir vorschlagen in der URL
nur die Differenz (in einer anderen Variable!) mitzugeben und nach dem
Starten der Session einfach auf $gnorf zu addieren.

Brauchst du $gnorf nur in dem hier beschriebenen Sinne (als Startpunkt
für deine Abfragen) dann reicht eigentlich die Übergabe per URL und du
brauchst es gar nicht in der Session mitzuschleifen.

hoffe es wurde klarer.
    MfG Thorsten


P.S:
Vielleicht noch zum besseren Verstehen - eine Übersicht der Wege
Variablen von Script zu Script zu geben (keine Garantie auf
vollständigkeit):
 - HTTP-GET: Die Variable einfach hinter einem ? an die URL der Scripts
hängen (http://meinscript.php?TestVar=1)
   Im Script wird dann eine Variable $TestVar erzeugt die den Wert 1
zugewiesen bekommt.

 - Übergabe per hidden-Feld: Man kann in einem Formular ein hidden-Feld
einfügen und dort den value passend setzen.
   Der Wert taucht dann beim Ziel-Script des Formulars in einer Variable
mit dem Namen des hidden-Felds wieder auf

 - Sessions: Registiriere eine Variable in einer Session. Startet ein
späteres Script wieder die Session, so hat es Zugriff auf alle in der
Session registrierten Variablen. Dabei wird von Script zu Script nur die
Session ID übergeben (durch Cookies oder HTTP-GET). Die Variablen
bleiben auf der Serverseite

--
this mail was presented by
___________________________________________________
           T h o r s t e n   G e b u h r
___ thorsten_(at)_enabled.de _ http://www.enabled.de ___



php::bar PHP Wiki   -   Listenarchive