Witam!
class MySessionHandler implements SessionHandlerInterface {
public function open($save_path, $name) {
//echo "SessionHandler::open<br />";
return true;
}
public function close() {
//echo "SessionHandler::close<br />";
return true;
}
public function read($id) {
echo "SessionHandler::read<br />";
return ($data = DB
::get_row('SELECT * FROM `session` WHERE `session_identifier` = ? LIMIT 1', array($id))) !== false ?
serialize($data) : ''; }
public function write($id, $data) {
echo "SessionHandler::write<br />"; if(($session = DB
::get_row('SELECT * FROM `session` WHERE `session_identifier` = ?', array($id))) !== false) {
return DB
::update('session', array('session_update_time' => time()), 'session_identifier = \''. $id .'\'') !== false; } else {
'session_identifier' => $id,
'session_start_time' => $time,
'session_update_time' => $time,
'user_id' => isset($data['user_id']) ?
$data['user_id'] : SESSION_GUEST
, 'user_data' => NULL,
'user_ip' => get_ip(),
'user_host' => get_host(),
'user_agent' => get_agent()
);
//return DB::insert(session', $session_data) !== false;
}
return true;
}
public function destroy($id) {
echo "SessionHandler::destroy<br />";
return DB
::query('DELETE FROM `session` WHERE `session_identifier` = ? LIMIT 1', array($id)) !== false; }
public function gc($max_lifetime) {
echo "SessionHandler::gc<br />";
return DB
::query('DELETE FROM `session` WHERE (? - `session_update_time`) > ?', array($time, $time + $max_lifetime)) !== false; }
}
Jakieś 6 godzin siedzę, patrzę w ten monitor i... nic. Czy naprawdę nie ma funkcji, która "przerobi" mi dane w metodzie
SessionHandler::read na takie, które akceptuje sesja? Przy powyższym kodzie dane sesji po prostu przepadają ponieważ przy przekazaniu ich do
$_SESSION wykryty zostaje niepoprawny format (tak podejrzewam). Przekopałem naprawdę dużo stron i jedyna sensowna metoda jaką znalazłem to napisanie własnego modułu i skompilowanie go z PHP ^^
Ten post edytował 404 13.09.2012, 22:04:33