2013-07-08 7 views
5

У моего веб-приложения на данный момент в моем домене cookie домена установлен example.com. Я хотел бы изменить его на .example.com. Для новых посетителей работает ini_set('session.cookie_domain', '.example.com'). Для посетителей, у которых уже есть файл cookie PHPSESSID до того, как это изменение сделано, домен остается прежним. Как я могу изменить домен в cookie сеанса, не спрашивая текущих пользователей об удалении их файлов cookie?Как изменить домен cookie для существующих пользователей

  • Я не могу использовать JavaScript для обновления cookie, потому что это HTTPOnly по соображениям безопасности.
  • Удаление сеансов на сервере не сбрасывает весь файл cookie, он обновляет только значение cookie (сохранение домена одинаково).
  • Современные браузеры сохраняют сеанс через перезагрузки, поэтому, несмотря на то, что cookie установлен в конце сеанса браузера, сеанс браузера никогда не заканчивается.

Единственная возможность, которую я могу придумать, - это установить в прошлом печенье, а затем перенаправить, чтобы получить новый файл cookie. Но я не знаю, какие посетители имеют домен cookie неправильно.

+0

Насколько это плохо, если бы вы просто переключились на сервер на новый файл cookie, который выходил из «старых» пользователей? –

+0

Утилизация всех сеансов на сервере регистрирует людей и обновляет значение cookie, но остальные параметры cookie остаются неизменными, поскольку файл cookie не был удален на клиенте. –

+0

ну, если вы не установили смехотворно длинную жизнь печенья, в конечном итоге браузеры истекут старый файл cookie. –

ответ

3

Перед началом сеанса установите новый session_name(). Таким образом изменится имя файла cookie, и любой старый файл cookie будет проигнорирован. Только новые файлы cookie будут отправлены и будут работать для сеанса.

+0

Блестящий! Работает! Не могу поверить, что я не думал об этом ... –

Смежные вопросы