Mailinglisten-Archive |
Hallo, ich kämpfe gerade gegen PHP-Sessions, die Daten sollen in einer DB gespeichert werden. Wir benutzen PHP 4.0.6, session.save_handler=user, register_globals=Off, track_vars=On, compiliert mit enable-trans-sid. Ich habe folgende User-Level-Funktionen geschrieben: ############################################################### <?php /* vim: set expandtab tabstop=4 shiftwidth=4 syntax=php: */ require_once ("program.class.php"); require_once ("db.class.php"); $p = new program (); $db = new db (&$p); $db->use_database ('session'); /**************************************** Anfang userdefined ****************************************/ /** * Diese Funktion sorgt für eine Verbindung zur Session-Datenbank */ function my_session_open ($save_path, $session_name) { return true; } /** * Mit dieser Funktion wird aufgeräumt (falls es was zum Aufräumen gibt) */ function my_session_close () { return true; } /** * Hier werden die Daten wiederhergestellt */ function my_session_read ($s_id) { global $p; global $db; $query = "SELECT sessionData FROM session.tblSessions WHERE sessid='$s_id'"; $rs = $db->fetch_query ($query); return $rs[0]["sessionData"]; } /** * Funktion zum, Sichern der Daten in der Sessionvariable */ function my_session_write ($s_id, $data) { global $p; global $db; $query = "REPLACE INTO session.tblSessions SET sessid='$s_id', sessionData='$data'"; $db->query ($query); return true; } /** * Mit dieser Funktion werden abgelaufene Sessions platt gemacht */ function my_session_destroy ($s_id) { global $p; global $db; $query = "DELETE FROM session.tblSessions WHERE sessid='$s_id'"; $db->query ($query); return true; } /** * der Garbage collector zum Aufräumen... */ function my_gc ($max_life_time) { /*// global $db; Hier fehlt noch was... $query = "DELETE FROM session.tblSessions WHERE zeitpunkt<NOW()"; $GLOBALS[db]->query ($query); */ return true; } session_set_save_handler ('my_session_open', 'my_session_close', 'my_session_read', 'my_session_write', 'my_session_destroy', 'my_gc'); session_start (); /**************************************** Ende userdefined ****************************************/ ?> ############################################################### Diese Datei wird included, erzeugt ein hausgemachtes Programm- und Datenbenkobjekt und soll sich um die Sessionverwaltung kümmern. Wenn ich mir $GLOBALS aber so anschaue, fehlt mir in diesem Hash der Hash HTTP_SESSION_VARS. Ich habe sonst alle HTTP_*_VARS-Hashes. Dank register_globals=Off bekomme ich damit auch sehr unschöne Fehlermeldungen. Woran kann es liegen, dass der HTTP_SESSION_VARS-Hash nicht erscheint? -- Mit freundlichen Grüßen Marco Schumann Technologie-Team = = = = = = = = = = = = = = = = = = = = united-domains AG Gautinger Str. 10 D-82319 Starnberg Tel.: +49 (0) 81 51 / 3 68 67 - 0 Fax.: +49 (0) 81 51 / 3 68 67 - 77 URL: http://www.united-domains.de eMail: mailto:schumann_(at)_united-domains.de = = = = = = = = = = = = = = = = = = = =
php::bar PHP Wiki - Listenarchive