Moin!
ich versuche gerade mit Sessions umzugehen. das habe ich zusammengetippt:
Da ist _etliches_ zu verbessern!
> session_start();
> // Wenn eine Session-ID übergeben wurde, dann diese reaktivieren
// Das kommt im Ablauf des Skriptes zu spät! Die Session-ID kannst du nur _VOR_ session_start() setzen. Außerdem sucht sich session_start() von ganz allein die übergebene Session-ID, man muß in der Regel nicht eingreifen.
> if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );
// Dein ID-Setz-Versuch ist überdies grausam und verläßt sich auf register_globals=on, obwohl du eigentlich ja versuchst, dich darauf nicht zu verlassen.
// Im übrigen sind die Variablen $HTTP_*_VARS allesamt veraltet, nutze $_* (also hier: $_GET).
> if (session_is_registered("kid")) session_register("kid");
// Verwende session_register() (und dementsprechend auch session_is_registered() ) nicht, das benötigt nämlich register_globals=on.
// Nutze stattdessen das Array $_SESSION zum Speichern von Werten. Betrachte es als ein ganz normales Array, dessen Inhalte aber am Skriptende gespeichert und nach session_start() wiederhergestellt werden.
> if (isset ($HTTP_GET_VARS["kid"])) $kid=$HTTP_GET_VARS["kid"];
// Es ist nicht unbedingt sinnvoll, Variablen aus $_GET nochmal extra in neue Variablen zu kopieren.
> session_register("kid");
// Siehe oben: Wenn ein Wert gespeichert werden soll, lege ihn in $_SESSION ab:
$_SESSION['kid-wert'] = $_GET['kid'];
// Der Array-Schlüssel kann dabei auch ganz anders heißen, es besteht also keine Verpflichtung, ihn zwingend gleichlautend wie die eigentliche Variable zu benennen.
Im Grunde genommen kannst du deinen ganzen Code zusammenkürzen auf:
session_start();
und die Verwendung von $_SESSION und $_GET, $_POST (für Formularwerte).
- Sven Rautenberg
--
My sssignature, my preciousssss!
My sssignature, my preciousssss!