Страницы

Поиск по вопросам

воскресенье, 10 марта 2019 г.

проблема с удалением кук

Ситуация такая
есть два сайта (domain.com , a.domain.com), с единой БД и тд.
Если авторизоваться и выйти с главного домена, то куки создаются и удаляются для всех доменов.
Если авторизоваться с a.domain.com, то куки создаются для всех доменом, но, при этом не удаляются, если выйти с главного домена, куки на А остаются :( а выйти с основного, остаются на А.
Как это побороть?
При выходе указываю, что нужно уйти со всех субдоменов, ставя точку перед доменом: .domain.com
public static function authorize($user) { if (self::isAuthorize()) { return; } $_SESSION[self::KEY_TOKEN] = $user->token; $_SESSION[self::KEY_ID] = $user->id; setcookie(self::KEY_TOKEN, $user->token, time() + 3600 * 24 * 365, '/', 'domain.com', self::isHttps(), self::HTTP_ONLY); setcookie(self::KEY_ID, $user->id, time() + 3600 * 24 * 365, '/', 'domain.com', self::isHttps(), self::HTTP_ONLY); }
# выходим с авторизации public static function exit() { unset($_SESSION[self::KEY_TOKEN]); unset($_SESSION[self::KEY_ID]); setcookie(self::KEY_TOKEN, null, null, '/', '.domain.com', self::isHttps(), self::HTTP_ONLY); setcookie(self::KEY_ID, null, null, '/', '.domain.com', self::isHttps(), self::HTTP_ONLY);
}


Ответ

Почему вы куку ставите на domain.com а снимаете с .domain.com? PHP отправляет это в заголовок Set-Cookie как есть, а браузеры могут не понять. Второй момент - попробуйте два последних параметра self::isHttps(), self::HTTP_ONLY убрать: для эксперимента(обычно их всегда по умолчанию оставляют).
Ещё один момент - попробуйте убирать куки, проставляя настоящее время в прошлом вместо null
setcookie(self::KEY_TOKEN, '', time() - 86400, '/', 'domain.com');//например так
Иначе, говорят, не все браузеры поймут что это сброс - опять-же. А так ошибок нет, кука с поддомена, живущая в пространстве основного домена: это нормально, а наоборот: политика безопасности не пропустит.

Комментариев нет:

Отправить комментарий