ramzes, возможно ты просто не до конца понимаешь архитектуру сессий. Дело в том, что сессия работает следующим образом:
1. Сервер открывает сессию
2. Сервер генерирует неповторимый идентификатор сессии (SSID)
3. Сервер передает заголовок Set-Cookie: PHPSSID=SSID
4. Сервер записывает в файл вида: SSID.data - данные сессии
5. При повторном заходе пользователя сервер получает от него куки с SSID
6. По SSID сервер находит файл SSID.data и читает из него данные сессии
Куки же работают практически так же:
1. Сервер передает заголовок Set-Cookie: данные
2. При повторном заходе пользователя сервер получает от него куки с данными
Да, сессия может работать без куков, но в остальном это совершенно одинаковый механизм, отличающийся только местом хранения данных: в сессии данные хранятся в файлах сервера, а у кук в файлах клиента.
Конкретно в вашем случае я не вижу смысла пользоваться куками, когда есть сессии, да и хранить в куках (или в сессии) пароль.
Это все я знаю. Но общего не вижу. Заголовок с ид сессии это не связь. Это просто один из заголовков, механизм связи сессий. Он тоже отключаемый и включаемый
ramzes, ну так и я не вижу смысла использовать куки, когда есть сессии.
# Delphinum (24.12.2016 / 21:09)
ramzes, ну так и я не вижу смысла использовать куки, когда есть сессии.
Но ты же используешь куки. Ты сам сказал.
Какой то диссонанс, отсылать сеткуки и утверждать что рни не нужны, не находишь?
ramzes, нет, я не использую куки, я использую заголовок Set-Cookie, а это не одно и то же. Вообще изначально предполагалось, что у нас будет на одной платформе и мобилка и веб сайт, потому я решил использовать стандартный заголовок для установки сессии (сессия, кстати, тоже через заголовок Set-Cookie ставится), а после уже узнал, что мобильщики не хотят куки, ну так я и не стал их использовать, просто передал в Set-Cookie мой SSID и все.
Вообще это долгая и запутанная история и речь не о ней, а о том, зачем вы пользуете куки если есть сессии?
Delphinum,
я использую заголовок Set-Cookie
Покажи на примере, пожалуйста, как ты используешь этот заголовок?
ДоХтор, из куска кода вы ничего не поймете, ибо там инфаструктура на зенде:
// Кусок контроллера
private function call(array $params, $value){
$headers = $this->getRequest()->getHeaders();
if($headers->has('X-Auth-Token')){
$sid = $headers->get('X-Auth-Token')->getFieldValue();
$this->sessionManager->setId($sid);
}
else{
$sid = '';
}
$this->sessionManager->start();
... // и т.д.
На деле я просто стартую самую обычную сессию и та, как и должна делать самая обычная сессия, шлет на телефон заголовок Set-Cookie, а телефон, в свою очередь, должен мне возвращать всегда заголовок X-Auth-Token.
Все это велосипед и быть так не должно, но задачи резко поменялись в последний момент, потому получилось то что получилось.
Польза сессий в том, что:
1. Они универсальны, ибо можно применить их на любом устройстве и любом протоколе
2. Они безопасны, ибо сессия зависит от сложности генерируемого SID и времени его жизни, а это может быть сколько угодно сложно
3. Она не велосипед, ибо уже реализована в PHP
Delphinum, а разве заголовок Set-Cookie не устанавливает куку в браузере? Чё-то я начинаю не понимать...
ДоХтор, да, для этого и нужен этот заголовок. Только вот сессия тоже работает через установку куки в браузере )