Annotation of embedaddon/php/ext/session/tests/session_set_save_handler_class_002.phpt, revision 1.1

1.1     ! misho       1: --TEST--
        !             2: Test session_set_save_handler() : full handler implementation
        !             3: --INI--
        !             4: session.save_handler=files
        !             5: session.name=PHPSESSID
        !             6: --SKIPIF--
        !             7: <?php include('skipif.inc'); ?>
        !             8: --FILE--
        !             9: <?php
        !            10: 
        !            11: ob_start();
        !            12: 
        !            13: /* 
        !            14:  * Prototype : bool session_set_save_handler(SessionHandler $handler [, bool $register_shutdown_function = true])
        !            15:  * Description : Sets user-level session storage functions
        !            16:  * Source code : ext/session/session.c 
        !            17:  */
        !            18: 
        !            19: echo "*** Testing session_set_save_handler() : full handler implementation ***\n";
        !            20: 
        !            21: class MySession2 extends SessionHandler {
        !            22:        public $path;
        !            23: 
        !            24:        public function open($path, $name) {
        !            25:                if (!$path) {
        !            26:                        $path = '/tmp';
        !            27:                }
        !            28:                $this->path = $path . '/u_sess_' . $name;
        !            29:                return true;
        !            30:        }
        !            31: 
        !            32:        public function close() {
        !            33:                return true;
        !            34:        }
        !            35: 
        !            36:        public function read($id) {
        !            37:                return @file_get_contents($this->path . $id);
        !            38:        }
        !            39: 
        !            40:        public function write($id, $data) {
        !            41:                return file_put_contents($this->path . $id, $data);
        !            42:        }
        !            43: 
        !            44:        public function destroy($id) {
        !            45:                @unlink($this->path . $id);
        !            46:        }
        !            47: 
        !            48:        public function gc($maxlifetime) {
        !            49:                foreach (glob($this->path . '*') as $filename) {
        !            50:                        if (filemtime($filename) + $maxlifetime < time()) {
        !            51:                                @unlink($filename);
        !            52:                        }
        !            53:                }
        !            54:                return true;
        !            55:        }
        !            56: }
        !            57: 
        !            58: $handler = new MySession2;
        !            59: session_set_save_handler(array($handler, 'open'), array($handler, 'close'),
        !            60:        array($handler, 'read'), array($handler, 'write'), array($handler, 'destroy'), array($handler, 'gc'));
        !            61: session_start();
        !            62: 
        !            63: $_SESSION['foo'] = "hello";
        !            64: 
        !            65: var_dump(session_id(), ini_get('session.save_handler'), $_SESSION);
        !            66: 
        !            67: session_write_close();
        !            68: session_unset();
        !            69: 
        !            70: session_start();
        !            71: var_dump($_SESSION);
        !            72: 
        !            73: session_write_close();
        !            74: session_unset();
        !            75: 
        !            76: session_set_save_handler($handler);
        !            77: session_start();
        !            78: 
        !            79: $_SESSION['foo'] = "hello";
        !            80: 
        !            81: var_dump(session_id(), ini_get('session.save_handler'), $_SESSION);
        !            82: 
        !            83: session_write_close();
        !            84: session_unset();
        !            85: 
        !            86: session_start();
        !            87: var_dump($_SESSION);
        !            88: 
        !            89: session_write_close();
        !            90: session_unset();
        !            91: 
        !            92: --EXPECTF--
        !            93: *** Testing session_set_save_handler() : full handler implementation ***
        !            94: string(%d) "%s"
        !            95: string(4) "user"
        !            96: array(1) {
        !            97:   ["foo"]=>
        !            98:   string(5) "hello"
        !            99: }
        !           100: array(1) {
        !           101:   ["foo"]=>
        !           102:   string(5) "hello"
        !           103: }
        !           104: string(%d) "%s"
        !           105: string(4) "user"
        !           106: array(1) {
        !           107:   ["foo"]=>
        !           108:   string(5) "hello"
        !           109: }
        !           110: array(1) {
        !           111:   ["foo"]=>
        !           112:   string(5) "hello"
        !           113: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>