我正在创建自己的`SessionHandler`类,实现`SessionHandlerInterface`。根据手册,我必须实现5个方法:`close()`、`destroy($session_id)`、`gc($maxlifetime)`、`open($save_path, $session_id)`、`read($session_id)`和`write($session_id, $session_data)`。手册甚至提供了一个示例实现,非常直接。唯一的问题是PHP会话ID始终采用以下格式:
但我想改成更标准化的uuidv5。hpuhqm4ppmdfaat5s1qmt5s397
由于$session_id是传递给所有方法的参数,我能想到的唯一方法是通过在open($save_path, $session_id)
方法实现中使用session_id($uuidv5)
来覆盖已生成的会话id,但这似乎不太合适。
有更简洁的方法吗?
session_id($uuidv5)
对您有效,为什么您认为它看起来不正确?据我所知,这是唯一能够在用户空间代码中设置会话 ID 的函数。请注意,在生成会话 ID 时要有足够的熵量,以免因为(美观?)原因而遇到安全问题。通常更改会话 ID 方案会降低会话安全性的风险。 - hakre