Можно ли получить путь сохраненного куки? - PullRequest
7 голосов
/ 10 мая 2010

Быстрый вопрос: можно указать путь, по которому файл cookie действителен, но можно ли также получить (прочитать) этот путь из файла cookie (в PHP)?

Или еще: возможно ли продлить время файла cookie, не зная, по какому пути он (но сохраняя этот путь)?

Ответы [ 4 ]

8 голосов
/ 10 мая 2010

Поскольку большинство браузеров по-прежнему используют спецификацию Netscape (см. кэшированная версия http://wp.netscape.com/newsref/std/cookie_spec.html), а не та, которая указана в RFC 2109 или RFC 2965 , список элементы в поле заголовка запроса Cookie будут состоять только из пары имя и значение:

При запросе URL-адреса с HTTP-сервера браузер сопоставляет URL-адрес со всеми cookie-файлами, и, если какой-либо из них совпадает, в HTTP-запрос будет включена строка, содержащая пары имя / значение всех соответствующих cookie-файлов. Вот формат этой строки:

Cookie: NAME1=OPAQUE_STRING1; NAME2=OPAQUE_STRING2 ...

Только более новые спецификации (RFC 2109 и RFC 2965) позволяют клиенту отправлять путь в запросе (выдержка из RFC 2109):

Синтаксис для заголовка:

cookie          =       "Cookie:" cookie-version
                        1*((";" | ",") cookie-value)
cookie-value    =       NAME "=" VALUE [";" path] [";" domain]
cookie-version  =       "$Version" "=" value
NAME            =       attr
VALUE           =       value
path            =       "$Path" "=" value
domain          =       "$Domain" "=" value

[…] Значение для атрибут path должен быть значением из атрибута Path, если он есть, соответствующего заголовка ответа Set-Cookie. В противном случае атрибут должен быть опущен в заголовке запроса Cookie. [...]

3 голосов
/ 15 августа 2010

также включает путь в значение cookie

1 голос
/ 10 мая 2010

да, вы можете изменить / продлить время файла cookie, если файл cookie установлен как корневой файл cookie. То есть вы должны установить cookie с «/» в последнем параметре. см. код ниже ...

setcookie("Message", $msg, time()+60, "/");

если нет, то в основном файлы cookie будут храниться в текущем пути (корень страницы). Вы можете попытаться получить к нему доступ.

0 голосов
/ 10 мая 2010

У PHP нет возможности прочитать путь куки, потому что браузер отправляет на сервер только те значения куки, которые должны быть отправлены, и ничего более.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...