Чтение файлов cookie и файлов cookie - PullRequest
1 голос
/ 13 сентября 2011

У меня есть два сервера: живой сервер (mydomain.com) и сервер QA (qa.mydomain.com). Когда я устанавливаю куки, я устанавливаю домен как «.mydomain.com» и «.qa.mydomain.com». Один из этих файлов cookie, называемый «session_id», используется для аутентификации и входа в систему. Очевидно, что cookie для одного домена не будет работать на другом. Однако, поскольку я добавляю точку к домену, PHP иногда читает файл cookie «.domain.com» на сервере QA, в результате чего я не могу войти в систему.

Есть ли способы заставить PHP прочитать правильный файл cookie?

Ответы [ 4 ]

2 голосов
/ 13 сентября 2011

Добавление точки означает, что она действительна также для всех поддоменов.Таким образом, файл cookie .mydomain.com также действителен для qa.mydomain.com.

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

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

В противном случае удаление точки также поможет;но я предполагаю, что вы хотите, чтобы это работало на www.mydomain.com, поэтому я не думаю, что это решение;).

1 голос
/ 13 сентября 2011

PHP читает все куки, отправленные браузером.Поскольку каждый хост .qa.domain.com также является хостом .domain.com, это нормально, чтобы получить все куки.

Вам нужно будет либо изменить доменные имена, либо изменить свой код PHP, чтобы можно было идентифицировать файлы cookie, которые следует игнорировать, из файлов cookie, которые не должны.

1 голос
/ 13 сентября 2011

См. http://se2.php.net/setcookie

Домен, для которого доступен файл cookie. Чтобы сделать файл cookie доступным во всех поддоменах сайта example.com (включая сам сайт example.com), установите для него значение «.example.com». Хотя некоторые браузеры принимают файлы cookie без начального. »RFC 2109 требует, чтобы он был включен. Если для домена задано значение «www.example.com» или «.www.example.com», файл cookie будет доступен только в поддомене www.

Вы говорите:

Очевидно, что cookie для одного домена не будет работать на другом.

когда .mydomain.com должен соответствовать всем поддоменам. Я бы удалил точку.

0 голосов
/ 13 сентября 2011

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

...