session: more logging
[pharext/pharext.org] / app / Session.php
1 <?php
2
3 namespace app;
4
5 use ArrayAccess;
6 use http\Env\Response;
7 use http\Env\Request;
8 use http\Params;
9
10 class Session implements ArrayAccess
11 {
12 function __construct(Config $config, BaseUrl $baseUrl, Request $request, Response $response, Logger $logger) {
13 ini_set("session.cookie_path", $baseUrl->path);
14 foreach ($config->session as $key => $val) {
15 ini_set("session.$key", $val);
16 }
17 if (ini_get("session.use_cookies")) {
18 $response->addHeader("Vary", "cookie");
19 }
20 $response->addHeader("Cache-Control",
21 new Params([
22 "private" => true,
23 "must-revalidate" => true,
24 "max-age" => ini_get("session.cache_expire") * 60
25 ])
26 );
27 session_start();
28 $logger->debug(session_id(), [
29 "url" => $request->getRequestUrl(),
30 ]);
31 }
32
33 function regenerateId() {
34 session_regenerate_id();
35 return $this;
36 }
37
38 function reset() {
39 $_SESSION = array();
40 session_destroy();
41 return $this;
42 }
43
44 function __debugInfo() {
45 return $_SESSION;
46 }
47
48 function &__get($p) {
49 return $_SESSION[$p];
50 }
51 function &offsetGet($o) {
52 return $_SESSION[$o];
53 }
54 function __set($p, $v) {
55 $_SESSION[$p] = $v;
56 }
57 function offsetSet($o, $v) {
58 $_SESSION[$o] = $v;
59 }
60 function __isset($p) {
61 return isset($_SESSION[$p]);
62 }
63 function offsetExists($o) {
64 return isset($_SESSION[$o]);
65 }
66 function __unset($p) {
67 unset($_SESSION[$p]);
68 }
69 function offsetUnset($o) {
70 unset($_SESSION[$o]);
71 }
72
73 }