<?php
class MySessionHandler implements \SessionHandlerInterface
{
public $messages = array();
public function open($savePath, $sessionName)
{
$this->messages[] = 'open ' . $sessionName;
}
public function close()
{
$this->messages[] = 'close';
}
public function read($id)
{
$this->messages[] = 'read ' . $id;
}
public function write($id, $data)
{
$this->messages[] = 'write ' . $id . ': ' . $data;
}
public function destroy($id)
{
$this->messages[] = 'destroy ' . $id;
}
public function gc($maxlifetime)
{
$this->messages[] = 'gc ' . var_export($maxlifetime, true);
}
public function __destruct()
{
var_dump($this->messages);
}
}
$handler = new MySessionHandler();
$handler->messages[] = 'session_status(): ' . session_status();
$handler->messages[] = 'session_id before start: ' . var_export(session_id(), true);
session_set_save_handler($handler, true);
$handler->messages[] = 'isset($_SESSION): ' . var_export(isset($_SESSION), true);
$_SESSION['before'] = 'start';
$handler->messages[] = 'headers_sent: ' . var_export(headers_sent(), true);
session_start();
$handler->messages[] = 'headers_sent: ' . var_export(headers_sent(), true);
$_SESSION['foo'] = 'bar';
$handler->messages[] = 'current session_id: ' . session_id();
session_regenerate_id(true);
$handler->messages[] = 'current session_id: ' . session_id();
session_write_close();
$handler->messages[] = '$_SESSION after close: ' . var_export($_SESSION, true);
$handler->messages[] = 'session_id after close: ' . session_id();
session_start();
session_destroy();
$handler->messages[] = '$_SESSION after destroy: ' . var_export($_SESSION, true);
$handler->messages[] = 'current session_id: ' . var_export(session_id(), true);
session_id('explicit-session-id');
session_start();
$_SESSION['john'] = 'doe';
preferences:
43.86 ms | 402 KiB | 5 Q