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 13echo "*** Testing session_set_save_handler() function: id interface ***\n"; 14 15class MySession2 implements SessionHandlerInterface, SessionIdInterface { 16 public $path; 17 18 public function open($path, $name) { 19 if (!$path) { 20 $path = sys_get_temp_dir(); 21 } 22 $this->path = $path . '/u_sess_' . $name; 23 return true; 24 } 25 26 public function close() { 27 return true; 28 } 29 30 public function read($id) { 31 return (string)@file_get_contents($this->path . $id); 32 } 33 34 public function write($id, $data) { 35 // Empty $data = 0 = false 36 return (bool)file_put_contents($this->path . $id, $data); 37 } 38 39 public function destroy($id) { 40 @unlink($this->path . $id); 41 } 42 43 public function gc($maxlifetime) { 44 foreach (glob($this->path . '*') as $filename) { 45 if (filemtime($filename) + $maxlifetime < time()) { 46 @unlink($filename); 47 } 48 } 49 return true; 50 } 51 52 public function create_sid() { 53 return pathinfo(__FILE__)['filename']; 54 } 55} 56 57$handler = new MySession2; 58session_set_save_handler($handler); 59session_start(); 60 61$_SESSION['foo'] = "hello"; 62 63var_dump(session_id(), ini_get('session.save_handler'), $_SESSION); 64 65session_write_close(); 66session_unset(); 67 68session_start(); 69var_dump($_SESSION); 70--CLEAN-- 71<?php 72@unlink(session_save_path().'/u_sess_PHPSESSIDsession_set_save_handler_iface_003'); 73?> 74--EXPECT-- 75*** Testing session_set_save_handler() function: id interface *** 76string(34) "session_set_save_handler_iface_003" 77string(4) "user" 78array(1) { 79 ["foo"]=> 80 string(5) "hello" 81} 82array(1) { 83 ["foo"]=> 84 string(5) "hello" 85} 86