PHP - 会话和REST

时间:2015-03-23 13:20:04

标签: php session cookies session-cookies

我需要帮助才能理解我做错了什么。 我正在构建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地址而不是域名。我不相信会有所不同,但需要你注意。

你能帮我理解这里有什么问题吗?

1 个答案:

答案 0 :(得分:2)

你必须致电:

session_name('lalala');
session_start();

之前session_unset()

而不是setcookie(...)session_set_cookie_params()之前使用session_start()