phpbar.de logo

Mailinglisten-Archive

[php] HTTP_SESSION_VARS

[php] HTTP_SESSION_VARS

Marco Schumann php_(at)_phpcenter.de
Tue, 10 Sep 2002 14:27:28 +0200


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