Сессии PHP и идентификатор проходящей сессии - PullRequest
2 голосов
/ 31 августа 2010

У меня есть API, где я передаю идентификатор сеанса назад и вперед между вызовами. Я настроил сессию так:

// start API session
session_name('apikey');
session_id($data['apikey']); // required to link session
session_start();

Хотя я назвал свой сеанс и передаю идентификатор сеанса через GET и POST, используя имя, PHP не возобновляет этот сеанс автоматически. Он всегда создает новый, если я не установил явно установленный идентификатор сессии.

На сайте www.php.net я нашел несколько старых комментариев пользователей, в которых говорилось, что если идентификатор сессии не является первым параметром, PHP не установит его автоматически. Это кажется странным, но даже когда я звонил попробовал, это все равно не работало: rest_services.php?apikey=sdr6d3subaofcav53cpf71j4v3&q=testing

Я использовал PHP годами, но меня немного смущает, почему мне нужно явно установить сеанс с session_id(), когда я называю сеанс и передаю его ключ соответствующим образом.

UPDATE

Кажется, я не был ясен. У меня вопрос, почему установка идентификатора сеанса с помощью session_id() требуется, когда я передаю идентификатор, используя имя сеанса apikey, через $_GET или $_POST. Теоретически это ничем не отличается от PHP SID, когда куки отключены. Но для меня это не сработает, если я не установлю идентификатор сессии. Почему?

Ответы [ 3 ]

1 голос
/ 14 июня 2011

Это связано с тем, что в новых версиях PHP по умолчанию установлено значение 1 для session.use_only_cookies, которое должно быть установлено равным '0', чтобы позволить PHP получить идентификатор сеанса из $_GET и $_POST.

0 голосов
/ 16 февраля 2011

Я считаю session_name() более подходящим. Может быть проблематично копаться с ID.

0 голосов
/ 01 сентября 2010

Сначала вы должны начать сеанс.

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