Mam taki skrypcik (niedokończony) do obsługi własnej sesji.
Pytanie za 100punktów: Dlaczego mogę pobrać dane z bazy w metodzie open() a jak próbuję pobrać w metodzie read() to dostaję komunikat ?:
Cytat
Notice: Undefined variable: oSessionDatabase in (...) on line 54
Fatal error: Call to a member function query() on a non-object in (...)on line 54
<?php
require_once('Core/Cube/Session/SessionHandler.interface.php');
require_once('Core/Cube/Session/SessionException.class.php');
require_once('Core/Cube/Database/' . Config::$DbType . '/' . Config::$DbType . '.class.php');
class CubeSession implements SessionHandler
{
private $aParameters = array(); private $bConnected = false;
public function __construct()
{
if (empty(Config
::$SessionHost)) throw new SessionException('Nieustawiona nazwa hosta. Sprawdź plik konfiguracyjny.');
if (empty(Config
::$SessionPort)) throw new SessionException('Nieustawiony port hosta. Sprawdź plik konfiguracyjny.');
if (empty(Config
::$SessionUser)) throw new SessionException('Nieustawiona nazwa użytkownika. Sprawdź plik konfiguracyjny.');
if (empty(Config
::$SessionBase)) throw new SessionException('Nieustawiona nazwa bazy. Sprawdź plik konfiguracyjny.');
$this->aParameters = array(Config
::$SessionHost, Config
::$SessionPort, Config
::$SessionUser, Config
::$SessionPassword, Config
::$SessionBase);
session_set_save_handler(array(& $this, 'open'), array(& $this, 'close'), array(& $this, 'read'), array(& $this, 'write'), array(& $this, 'destroy'), array(& $this, 'gc')); }
public function open($sSessionSavePath, $sSessionName)
{
if (!$this->bConnected)
{
$oSessionDatabase = new Mysql(false, $this->aParameters); $oSessionDatabase->query('SELECT * FROM sessions;');
$this->bConnected = true;
}
return true;
}
public function close()
{
$this->gc(Config::$SessionMaxLifeTime);
}
public function read($sSessionId)
{
$oSessionDatabase->query('SELECT sessions_values FROM sessions WHERE sessions_identifier = ' . $sSessionId);
}
/////////////////////////////////////////////////
public function write($sSessionId, $aSessionValues){}
public function destroy($sSessionId){}
public function gc($iSessionLifeTime)
{
}
}
?>