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

153
16 октября 2018, 00:50

Ситуация такая

есть два сайта (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);
    }
Answer 1

Почему вы куку ставите на domain.com а снимаете с .domain.com? PHP отправляет это в заголовок Set-Cookie как есть, а браузеры могут не понять. Второй момент - попробуйте два последних параметра self::isHttps(), self::HTTP_ONLY убрать: для эксперимента(обычно их всегда по умолчанию оставляют).

Ещё один момент - попробуйте убирать куки, проставляя настоящее время в прошлом вместо null:

setcookie(self::KEY_TOKEN, '', time() - 86400, '/', 'domain.com');//например так

Иначе, говорят, не все браузеры поймут что это сброс - опять-же. А так ошибок нет, кука с поддомена, живущая в пространстве основного домена: это нормально, а наоборот: политика безопасности не пропустит.

READ ALSO
Cron в Laravel 5 (Linux)

Cron в Laravel 5 (Linux)

Мне нужно сделать так, чтобы задача в Cron выполнялась каждые n минут, причем n может быть от 1 до бесконечностиЭто число указывается в переменной...

128
Как добавить динамическую таблицу в WordPress?

Как добавить динамическую таблицу в WordPress?

Я создал верстку сайта на обычном HTML\CSS\JS , и я посадил верстку на WP, а теперь вопрос

166
Проблема с кодировкой в Форме Обратной связи

Проблема с кодировкой в Форме Обратной связи

подскажите пож-та есть такой код php для форма обратной связи, но есть 2 проблемы:

180
Как парсить библиотекой simplehtmldom?

Как парсить библиотекой simplehtmldom?

я убил на это месяцы, и искал в интернете, и сам пытался решать, и методом тыка перепробовал, но все никак

164