如果我在它之后使用`exit()`,那么Slim框架提供的`setCookie()`将不起作用

时间:2015-01-19 11:51:57

标签: php cookies session-cookies slim

我需要使用ajax请求来执行登录。这是请求的功能:

function loginAdmin() {
    $app = \Slim\Slim::getInstance();
    if (auth()) {
        $app->setCookie('admin', TRUE);
        exit(TRUE);
    }
    exit(NULL);
}

我会处理ajax响应以查看它是否属实。但是不会设置cookie。如果我删除exit(TRUE),则可以设置Cookie。

我已经阅读了Slim的源代码,setCookie()函数调用\Slim\Http\Cookies::setCookie(),它将键和值设置为$data成员。但我不确定何时发送cookie。

但我仍然不知道exit函数如何影响setCookie函数。

1 个答案:

答案 0 :(得分:1)

您无法使用exit()发送回复。您应该echo()路线中的响应。例如:

function loginAdmin() {
    $app = \Slim\Slim::getInstance();
    if (auth()) {
        $app->setCookie('admin', TRUE);
        return 1;
    }
    return 0;
}

$app->get('/foo', function {
    echo loginAdmin();
});

以上代码不是进行身份验证的好方法,但它显示了重点。