Как с помощью PHPSessID получить user_id

На моем сайте авторизовался пользователь. Ему в куку записался PHPSESSID.

Как, зная этот PHPSESSID, сервер может сказать, авторизован пользователь или нет? В какой переменной хранится эта информация?

Авторизация проходит встроенными средствами yii2.

Например:

Пользователь зашел на сайт. Зарегистрировался и авторизовался. Ему в куку записался PHPSESSID = 6g7a6m1prd3sdd4batr735cdl0. Пользователь увидел эту куку и передал мне. Могу ли я узнать с помощью данного PHPSESSID, а именно 6g7a6m1prd3sdd4batr735cdl0 узнать кто сидит под этой комбинации на сервере?

Как это можно сделать?

$_SESSION['6g7a6m1prd3sdd4batr735cdl0'] ничего не даст $session = new Session; $session->open(); $session['6g7a6m1prd3sdd4batr735cdl0'] тоже. И это видимо логично. Ведь _SESSION принадлежит к определенной данной сессии, а не доступ ко всем сессиям сервера.

Куда мне обратиться, чтобы получить информацию по этой сессии?


Ответы (2 шт):

Автор решения: Дмитрий Анисько
Yii::$app->user->isGuest;

Посмотрите документацию для более подробной информации: http://www.yiiframework.com/doc-2.0/yii-web-user.html

→ Ссылка
Автор решения: zabachok

Вы пошли по правильному пути, но чуть чуть не дожали. Вам нужно сделать так:
Yii::$app->session->setId('6g7a6m1prd3sdd4batr735cdl0');
$sessionData = (array)Yii::$app->session;

В переменной sessionData будет массив данных сессии. Там есть ключ _id в котором хранится идентификатор пользователя. НО! Если вы делаете это в консольных коммандах, то там вообще не будет компонента session. Для того чтоб был, вам надо скопировать конфиг компонентов user и session.

Если вы хотите получить данные сессии без йии в консоли, то надо сделать так:
session_start();
session_id('6g7a6m1prd3sdd4batr735cdl0');
$sessionData = $_SESSION;

И тут есть опять "НО". Дело в том, что если вы попытаетесь так прочитать сессию, созданную йии, то скорее всего получите билеберду, так как сессия скорее всего зашифрована, но это не точно.

И еще обратите внимание на то где хранится сессия. Если в не стандартном хранилище, то второй вариант не сработает.

→ Ссылка