bool session_set_save_handler ( callable $open , callable $close , callable $read , callable $write , callable $destroy , callable $gc [, callable $create_sid [, callable $validate_sid [, callable $update_timestamp ]]] )
bool session_set_save_handler ( SessionHandlerInterface $sessionhandler [, bool $register_shutdown = true ] )
PHP session_set_save_handler()有两种原型,第一种原型需要提供至少6个参数,每个参数都是一个回调函数,每个回调函数可以是单独的函数,也可以是某个类或类的实例对象的成员方法,如果是类的静态方法,使用'CLASS_NAME::METHOD_NAME'的格式,如果是实例对象的成员方法,使用array($object, 'METHOD_NAME')的格式。
使用PHP session_set_save_handler回调函数原型,PHP 5.5.1+支持create_sid(),在需要重新生成session id时回调函数create_sid()会自动调用,比如调用session_regenerate_id()时,PHP 7.0+还支持validate_sid($sessionId)和update_timestamp($sessionId).
其中validate_sid()用来检测当前session id是否有效,返回值为true时表示当前session id有效,为false时表示无效,此时PHP会自动生成一个新的session id. validate_sid()可以用它来检测客户端传来的session id是否长度符合要求,防止恶意攻击或串号,对于开启了session.use_strict_mode的情况,还可以用来检测当前session id是否存在于服务器端,如果没有就将返回值设置为false让PHP重新生成一个新的session id
update_timestamp()用来更新时间戳,返回值必须为布尔值,true代表成功,false代表失败。
使用PHP session_set_save_handler OOP面向对象原型,PHP 5.5.1+支持create_sid(),直到PHP 7.2都不支持validate_sid()和update_timestamp(),需要自己写代码处理相关业务逻辑。 |
|