Doom123
16.05.2009, 11:39
возникла проблема ... у меня есть класс для работы с сессиями через БД потом от нех делать рнешил сделать тоже самое но с использованием
session_set_save_handler
вот что я делаю ..
<?php
//Различные функции
require_once ('includes/func.php');
//Файл конфигурации\\
require_once ('includes/config.php');
$a = 'aa';
function ses_open($save_path,$ses_name) {
return true; }
function ses_close() { return true; }
function ses_read($key)
{
global $db;
$res = $db->mysql_qw('SELECT `val` FROM `session` WHERE `key`=?',$key) or die();
$fetch = $db->mysql_fetch($res);
return $fetch['val'];
}
function ses_write($key,$val)
{
global $db;
$db->mysql_qw('REPLACE INTO `session` SET `val`=?,`key`=?',$val,$key) or die();
return true;
}
function ses_destroy($key)
{
global $db;
$db->mysql_qw('DELETE FROM `session` WHERE `key` = ?',$key) or die();
return true;
}
function ses_gc($maxlifetime)
{
global $db;
$time = time() - $maxlifetime;
$db->mysql_qw('DELETE FROM `session` WHERE UNIX_TIMESTAMP(`time`) <= ?',$time) or die();
return true;
}
session_set_save_handler("ses_open","ses_close","ses_read","ses_write","ses_destroy","ses_gc");
session_start();
$_SESSION['test'] = 1;
?>
Выводит ошибку
Fatal error: Call to a member function mysql_qw() on a non-object in test.php on line 29
Я сделал вывод массива $GLOBALS в ф-ции ses_read и ses_write
И удивился когда обьект $db существует в ses_read
а в ses_write он уже уничтожен ... думал изза
__destruct() в классе mysql но нет =\\
кто может обьеснить что тут произошло?
session_set_save_handler
вот что я делаю ..
<?php
//Различные функции
require_once ('includes/func.php');
//Файл конфигурации\\
require_once ('includes/config.php');
$a = 'aa';
function ses_open($save_path,$ses_name) {
return true; }
function ses_close() { return true; }
function ses_read($key)
{
global $db;
$res = $db->mysql_qw('SELECT `val` FROM `session` WHERE `key`=?',$key) or die();
$fetch = $db->mysql_fetch($res);
return $fetch['val'];
}
function ses_write($key,$val)
{
global $db;
$db->mysql_qw('REPLACE INTO `session` SET `val`=?,`key`=?',$val,$key) or die();
return true;
}
function ses_destroy($key)
{
global $db;
$db->mysql_qw('DELETE FROM `session` WHERE `key` = ?',$key) or die();
return true;
}
function ses_gc($maxlifetime)
{
global $db;
$time = time() - $maxlifetime;
$db->mysql_qw('DELETE FROM `session` WHERE UNIX_TIMESTAMP(`time`) <= ?',$time) or die();
return true;
}
session_set_save_handler("ses_open","ses_close","ses_read","ses_write","ses_destroy","ses_gc");
session_start();
$_SESSION['test'] = 1;
?>
Выводит ошибку
Fatal error: Call to a member function mysql_qw() on a non-object in test.php on line 29
Я сделал вывод массива $GLOBALS в ф-ции ses_read и ses_write
И удивился когда обьект $db существует в ses_read
а в ses_write он уже уничтожен ... думал изза
__destruct() в классе mysql но нет =\\
кто может обьеснить что тут произошло?