mirror of
https://github.com/php/php-src.git
synced 2024-10-04 00:06:16 +00:00
1e836cdd64
Creates a new SessionIdInterface and moves create_sid() into it, so existing handlers implementing SessionHandlerInterface don't require create_sid(). SessionHandler still includes the method so the default mod can be called, but now implements both interfaces. Also added several more tests for this feature.
86 lines
1.6 KiB
PHP
86 lines
1.6 KiB
PHP
--TEST--
|
|
Test session_set_save_handler() function: create_sid
|
|
--INI--
|
|
session.save_handler=files
|
|
session.name=PHPSESSID
|
|
--SKIPIF--
|
|
<?php include('skipif.inc'); ?>
|
|
--FILE--
|
|
<?php
|
|
|
|
ob_start();
|
|
|
|
echo "*** Testing session_set_save_handler() function: create_sid ***\n";
|
|
|
|
class MySession2 {
|
|
public $path;
|
|
|
|
public function open($path, $name) {
|
|
if (!$path) {
|
|
$path = sys_get_temp_dir();
|
|
}
|
|
$this->path = $path . '/u_sess_' . $name;
|
|
return true;
|
|
}
|
|
|
|
public function close() {
|
|
return true;
|
|
}
|
|
|
|
public function read($id) {
|
|
return @file_get_contents($this->path . $id);
|
|
}
|
|
|
|
public function write($id, $data) {
|
|
return file_put_contents($this->path . $id, $data);
|
|
}
|
|
|
|
public function destroy($id) {
|
|
@unlink($this->path . $id);
|
|
}
|
|
|
|
public function gc($maxlifetime) {
|
|
foreach (glob($this->path . '*') as $filename) {
|
|
if (filemtime($filename) + $maxlifetime < time()) {
|
|
@unlink($filename);
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public function create_sid() {
|
|
return 'my_sid';
|
|
}
|
|
}
|
|
|
|
$handler = new MySession2;
|
|
session_set_save_handler(array($handler, 'open'), array($handler, 'close'),
|
|
array($handler, 'read'), array($handler, 'write'), array($handler, 'destroy'), array($handler, 'gc'), array($handler, 'create_sid'));
|
|
session_start();
|
|
|
|
$_SESSION['foo'] = "hello";
|
|
|
|
var_dump(session_id(), ini_get('session.save_handler'), $_SESSION);
|
|
|
|
session_write_close();
|
|
session_unset();
|
|
|
|
session_start();
|
|
var_dump($_SESSION);
|
|
|
|
session_write_close();
|
|
session_unset();
|
|
|
|
--EXPECTF--
|
|
*** Testing session_set_save_handler() function: create_sid ***
|
|
string(%d) "my_sid"
|
|
string(4) "user"
|
|
array(1) {
|
|
["foo"]=>
|
|
string(5) "hello"
|
|
}
|
|
array(1) {
|
|
["foo"]=>
|
|
string(5) "hello"
|
|
}
|