Annotation of embedaddon/php/ext/session/tests/025.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: custom save handler, multiple session_start()s, complex data structure test.
3: --SKIPIF--
4: <?php include('skipif.inc'); ?>
5: --INI--
6: session.use_cookies=0
7: session.cache_limiter=
8: session.name=PHPSESSID
9: session.serialize_handler=php
10: --FILE--
11: <?php
12:
13: error_reporting(E_ALL);
14:
15: class handler {
16: public $data = 'baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:1;}}';
17:
18: function open($save_path, $session_name)
19: {
20: print "OPEN: $session_name\n";
21: return true;
22: }
23: function close()
24: {
25: print "CLOSE\n";
26: return true;
27: }
28: function read($key)
29: {
30: print "READ: $key\n";
31: return $GLOBALS["hnd"]->data;
32: }
33:
34: function write($key, $val)
35: {
36: print "WRITE: $key, $val\n";
37: $GLOBALS["hnd"]->data = $val;
38: return true;
39: }
40:
41: function destroy($key)
42: {
43: print "DESTROY: $key\n";
44: return true;
45: }
46:
47: function gc() { return true; }
48:
49: function __construct()
50: {
51: if (ini_get("unicode.semantics")) {
52: $this->data = str_replace('s:', 'U:', $this->data);
53: }
54: }
55: }
56:
57: $hnd = new handler;
58:
59: class foo {
60: public $bar = "ok";
61: function method() { $this->yes++; }
62: }
63:
64: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
65:
66: session_id("abtest");
67: session_start();
68: $baz = $_SESSION['baz'];
69: $arr = $_SESSION['arr'];
70: $baz->method();
71: $arr[3]->method();
72:
73: var_dump($baz);
74: var_dump($arr);
75:
76: session_write_close();
77:
78: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
79: session_start();
80: $baz = $_SESSION['baz'];
81: $arr = $_SESSION['arr'];
82:
83:
84: $baz->method();
85: $arr[3]->method();
86:
87:
88: $c = 123;
89: $_SESSION['c'] = $c;
90: var_dump($baz); var_dump($arr); var_dump($c);
91:
92: session_write_close();
93:
94: session_set_save_handler(array($hnd, "open"), array($hnd, "close"), array($hnd, "read"), array($hnd, "write"), array($hnd, "destroy"), array($hnd, "gc"));
95: session_start();
96: var_dump($baz); var_dump($arr); var_dump($c);
97:
98: session_destroy();
99: ?>
100: --EXPECTF--
101: OPEN: PHPSESSID
102: READ: abtest
103: object(foo)#%d (2) {
104: ["bar"]=>
105: string(2) "ok"
106: ["yes"]=>
107: int(2)
108: }
109: array(1) {
110: [3]=>
111: object(foo)#%d (2) {
112: ["bar"]=>
113: string(2) "ok"
114: ["yes"]=>
115: int(2)
116: }
117: }
118: WRITE: abtest, baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:2;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:2;}}
119: CLOSE
120: OPEN: PHPSESSID
121: READ: abtest
122: object(foo)#%d (2) {
123: ["bar"]=>
124: string(2) "ok"
125: ["yes"]=>
126: int(3)
127: }
128: array(1) {
129: [3]=>
130: object(foo)#%d (2) {
131: ["bar"]=>
132: string(2) "ok"
133: ["yes"]=>
134: int(3)
135: }
136: }
137: int(123)
138: WRITE: abtest, baz|O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:3;}arr|a:1:{i:3;O:3:"foo":2:{s:3:"bar";s:2:"ok";s:3:"yes";i:3;}}c|i:123;
139: CLOSE
140: OPEN: PHPSESSID
141: READ: abtest
142: object(foo)#%d (2) {
143: ["bar"]=>
144: string(2) "ok"
145: ["yes"]=>
146: int(3)
147: }
148: array(1) {
149: [3]=>
150: object(foo)#%d (2) {
151: ["bar"]=>
152: string(2) "ok"
153: ["yes"]=>
154: int(3)
155: }
156: }
157: int(123)
158: DESTROY: abtest
159: CLOSE
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>