Как получить домен определенного файла cookie?

#php #cookies #subdomain

#php #файлы cookie #поддомен

Вопрос:

Есть веб-сайт www.example.com
Все файлы cookie устанавливаются на www поддомен.
Теперь есть новый поддомен, и я хочу, чтобы файлы cookie отображались для всех поддоменов.

Цель состоит в том, чтобы переписать файлы www.example.com cookie для всех старых посетителей .example.com или написать новые для .example.com , если установлено для www.

Для этого я хочу получить домен существующих файлов cookie.
Возможно ли это? Есть ли функция php для этой цели?

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

1. Вы можете найти $cookie->setDomain($domain) полезные, как в этой автономной библиотеке . Хотя вы не можете получить доступ к domain свойству файлов cookie, которые уже были отправлены (и установлены на клиенте), вы можете просто установить новые. Это будет работать нормально.

Ответ №1:

Я не думаю, что домен доступен при чтении файлов cookie, это ограничено браузером. Решением было бы удалить старый файл cookie и заменить его на новый домен.

Например.

 $value = $_COOKIE['TestCookie'];
setcookie("TestCookie", "", time() - 3600, "www.example.com");
setcookie("TestCookie", $value, time   (60 * 60 * 24 * 30), ".example.com");
  

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

1. У меня была эта идея, но таким образом, даже после изменения всех файлов cookie процесс будет повторяться вечно. Я делаю это на стороне сервера. И еще одно: Google Chrome знает домен cookie (в элементе проверки)

2. Вы можете добавить еще один файл cookie, чтобы сообщить, что вы уже выполнили преобразование.

Ответ №2:

Если я вас правильно понял, вы хотите изменить домен файлов cookie, существующих в настоящее время на клиентах?

Это невозможно (*).

При получении файла cookie на стороне сервера, возможно ли вам увидеть, был ли он установлен для домена www, имея в виду, что файл cookie, переданный клиенту, не содержит информации о домене?

(*) Это может быть возможно с помощью JavaScript на стороне клиента.

Ответ №3:

Вы можете использовать PHP-функцию session_get_cookie_params() . Я надеюсь, что это сделает работу.

 domain:"www.domain_name.com"
httponly:false
lifetime:1525181833
path:"/"
secure:false
  

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

1. будьте осторожны: php.net/manual/ru/function.session-get-cookie-params.php#119445 . Я создал файл cookie с HttpOnly true, и эта функция показала, что это false

2. session_get_cookie_param() получает только настройки, определенные в php.ini для файла cookie сеанса (используется с session_start(), $ _SESSION и т. Д.), А не информацию о фактическом файле cookie