Как с помощью 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
Вы пошли по правильному пути, но чуть чуть не дожали. Вам нужно сделать так:
Yii::$app->session->setId('6g7a6m1prd3sdd4batr735cdl0');
$sessionData = (array)Yii::$app->session;
В переменной sessionData будет массив данных сессии. Там есть ключ _id в котором хранится идентификатор пользователя. НО! Если вы делаете это в консольных коммандах, то там вообще не будет компонента session. Для того чтоб был, вам надо скопировать конфиг компонентов user и session.
Если вы хотите получить данные сессии без йии в консоли, то надо сделать так:
session_start();
session_id('6g7a6m1prd3sdd4batr735cdl0');
$sessionData = $_SESSION;
И тут есть опять "НО". Дело в том, что если вы попытаетесь так прочитать сессию, созданную йии, то скорее всего получите билеберду, так как сессия скорее всего зашифрована, но это не точно.
И еще обратите внимание на то где хранится сессия. Если в не стандартном хранилище, то второй вариант не сработает.