我需要帮助才能理解我做错了什么。 我正在构建RESTful API以供内部使用。 我有2个端点 - / login和/ logout。 登录时我正在验证用户输入并创建会话 - 工作正常。 注销时我想销毁会话,但它说" session_destroy():试图在...中销毁未初始化的会话"
以下是代码:
登录
$api->post('/login', function () {
if(some validations)
{
session_name('lalala');
session_start();
session_regenerate_id(true);
setcookie(session_name(), session_id(), 0, '/', 'xxx.xxx.xxx.xxx', false, true);
}
});
注销:
$api->post('/logout', function () {
session_unset();
session_destroy(); // here it fails
setcookie('lalala', "", 1);
setcookie('lalala', false);
unset($_COOKIE);
});
请注意,我使用的是IP地址而不是域名。我不相信会有所不同,但需要你注意。
你能帮我理解这里有什么问题吗?
答案 0 :(得分:2)
你必须致电:
session_name('lalala');
session_start();
之前session_unset()
而不是setcookie(...)
在session_set_cookie_params()
之前使用session_start()