1--TEST-- 2Test session_set_save_handler() function: id interface 3--INI-- 4session.save_handler=files 5session.name=PHPSESSID 6--SKIPIF-- 7<?php include('skipif.inc'); ?> 8--FILE-- 9<?php 10 11ob_start(); 12 13/* 14 * Prototype : bool session_set_save_handler(SessionHandlerInterface $handler [, bool $register_shutdown_function = true]) 15 * Description : Sets user-level session storage functions 16 * Source code : ext/session/session.c 17 */ 18 19echo "*** Testing session_set_save_handler() function: id interface ***\n"; 20 21class MySession2 implements SessionHandlerInterface, SessionIdInterface { 22 public $path; 23 24 public function open($path, $name) { 25 if (!$path) { 26 $path = sys_get_temp_dir(); 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 // Empty $data = 0 = false 42 return (bool)file_put_contents($this->path . $id, $data); 43 } 44 45 public function destroy($id) { 46 @unlink($this->path . $id); 47 } 48 49 public function gc($maxlifetime) { 50 foreach (glob($this->path . '*') as $filename) { 51 if (filemtime($filename) + $maxlifetime < time()) { 52 @unlink($filename); 53 } 54 } 55 return true; 56 } 57 58 public function create_sid() { 59 return 'my_sid'; 60 } 61} 62 63$handler = new MySession2; 64session_set_save_handler($handler); 65session_start(); 66 67$_SESSION['foo'] = "hello"; 68 69var_dump(session_id(), ini_get('session.save_handler'), $_SESSION); 70 71session_write_close(); 72session_unset(); 73 74session_start(); 75var_dump($_SESSION); 76 77session_write_close(); 78session_unset(); 79--EXPECTF-- 80*** Testing session_set_save_handler() function: id interface *** 81string(%d) "my_sid" 82string(4) "user" 83array(1) { 84 ["foo"]=> 85 string(5) "hello" 86} 87array(1) { 88 ["foo"]=> 89 string(5) "hello" 90} 91