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