Hallo!
Ich erstelle eine Session und registriere eine Variable.
Zugreifen kann ich sofort darauf mit $_SESSION[test].
ich hoffe nicht mit session_register(), denn laut Manual:
"Aus Gründen der Verbesserung der Sicherheit und der Lesbarkeit des Codes wird die Verwendung von $_SESSION (oder $HTTP_SESSION_VARS bei PHP 4.0.6 oder niedriger) empfohlen. Mit $_SESSION werden die Funktionen session_register(), session_unregister() und session_is_registered() nicht benötigt. Auf die Session-Variablen kann wie auf jede normale Variable zugegriffen werden."
http://de3.php.net/manual/de/ref.session.php
" Wenn Sie $_SESSION (oder $HTTP_SESSION_VARS) verwenden, sollten Sie nicht session_register(), session_is_registered() und session_unregister() verwenden."
http://de3.php.net/manual/de/function.session-register.php
Du solltest Dir die Seiten im Manual mal genau durchlesen, da werden viele Fragen beantwortet.
Aber bei normalen Variablen kann ich auch mit
$GLOBALS[test] direkt darauf zugreifen, warum also
nicht bei sessions ? Da gehts erst nach erneutem Aufruf.
Zunächst - globale Variablen sollte man nach Möglichkeit vermeiden.
Ein gut konfiguriertes PHP sollte Session-Variablen überhaupt nicht mehr im globalen Namensraum initialisieren.
http://de3.php.net/manual/de/security.registerglobals.php
Warum es grundsätzlich nicht im selben Script funktionieren kann liegt daran, dass die Session-Variablen im (und das auch nur im [schlechten] Fall von register-globals=on) erst am Ende des Scriptes in die Session geschrieben werden, und erst beim erneuten Aufruf von session_start() (also beim nächsten Request) als globale Variablen initialisiert werden. Das ist aber vollkommen unnötig weil man auf Session-Variablen immer über den $_SESSION-Array zugreifen sollte, das heißt sowohl Werte in die Session schreiben, als auch Werte auslesen. Das ist sauberer, performanter und sicherer.
Grüße,
Andreas