`setCookie()`, который предоставляет Slim Framework, не будет работать, если я использую `exit()` после него

Мне нужно использовать ajax-запрос для входа в систему. Вот функция, к которой идет запрос:

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

И я обработаю ответ ajax, чтобы увидеть, правда ли это. Но печенье не будет установлено. Если я удалю exit(TRUE) печенье может быть установлено.

Я прочитал исходный код Slim, setCookie() вызовы функций \Slim\Http\Cookies::setCookie(), который устанавливает ключ и значение в $data член. Но я не уверен, когда куки отправляются.

Но я до сих пор не знаю, как это exit функция влияет setCookie функция.

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();
});

Приведенный выше код не является хорошим способом проверки подлинности, но он показывает суть.

Другие вопросы по тегам