Codeigniter - получить данные сеанса всех пользователей

Мне нужно получить все данные сеансов и предпринять некоторые действия с ними, есть ли какой-либо возможный способ их получить, я нашел, как решить это в php, но codeigniter использует собственную библиотеку пользовательских сеансов.

Родной php

$_SESSION

Как я могу сделать это в codeigniter


person Sabri Aziri    schedule 03.03.2014    source источник
comment
Это поможет вам $this->session->all_userdata();. Загрузите библиотеку сеансов перед этим фрагментом.   -  person Rahil Wazir    schedule 03.03.2014
comment
есть ли какие-либо конкретные данные, которые вы хотите получить, но недоступные в классе сеанса codeigniter?   -  person anurupr    schedule 03.03.2014
comment
@RahilWazir $this-›session-›all_userdata(); не помогает, потому что у него есть только один массив для каждого из пользователей, что я пытаюсь сделать, например, скажем, у меня есть 2 пользователя, вошедших в мой системный пользователь A и B, и моя проблема заключается в том, как я могу получить данные сеанса пользователя B из пользователь А. Я достаточно ясно и спасибо за вашу помощь   -  person Sabri Aziri    schedule 03.03.2014
comment
@sabri Вы можете создать столбец status в своей пользовательской таблице со значением по умолчанию 0, и когда пользователь войдет в систему, выполните запрос и измените значение status на 1. Запросите всех пользователей, чей статус 1, и вы получите данные от пользователей, чей логин. Не забудьте установить его обратно на 0 после выхода из системы.   -  person Rahil Wazir    schedule 03.03.2014


Ответы (7)


Чтобы получить все данные сеанса, вы можете использовать $this->session->all_userdata();

Чтобы распечатать всю вашу переменную сеанса, используйте эту строку в любом месте вашего кода:

echo '<pre>'; print_r($this->session->all_userdata());exit;
person Mohan    schedule 04.03.2014

Вы можете использовать сеанс БД. Таким образом, данные будут храниться в базе данных. См. раздел Сохранение данных сеанса в базе данных.

Если у вас нет поддержки базы данных, просто используйте cookie и получите данные с помощью

$username = 'John Doe';
$this->session->set_userdata('username',$username);
$var = $this->session->userdata;
echo $var['username'];
person stavgian    schedule 03.03.2014
comment
Да, это было бы решением, но в моем случае я не могу использовать БД :) +1 - person Sabri Aziri; 03.03.2014
comment
Вы можете использовать сеанс, хранящийся в cookie, из конфигурационного файла codeigniter. - person stavgian; 03.03.2014

Если вы хотите видеть все так, как это сделал я, нужно преобразовать $this->session в массив, а затем print_r его.

        $this->load->library('session');
        echo "<pre>". print_r((array)$this->session, true) ."</pre>";

Надеюсь это поможет.

person Marius Cucuruz    schedule 01.04.2016

Чтобы получить данные сеанса всех пользователей. Сначала нам нужно инициализировать класс Session вручную в конструкторе нашего контроллера, используя следующий код.

$this->load->library('session');

Затем мы используем следующий код.

$this->session->all_userdata();

Вышеупомянутая функция возвращает ассоциативный массив, подобный следующему.

Array
( [session_id] => 4a5b5dca45708ab1a84364eeb455j007 [ip_address] => 127.0.0.1 [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; [last_activity] => 1102132923
)

Полное руководство по сеансу Ci. Пожалуйста, перейдите по ссылке

person Manish    schedule 04.10.2015

Если вы знаете, как это сделать в PHP, почему бы не реализовать это и не использовать класс сеанса codeigniter? мой опыт показывает, что класс сеанса CI довольно сильно ломается с вызовами ajax и прокси-серверами, поэтому его лучше избегать.

person pgee70    schedule 08.03.2014

Печать всех данных сеанса

echo '<pre>'; print_r($this->session);
person Manish Patil    schedule 23.08.2020

person    schedule
comment
извлекать данные из данных в сеансе codeigniter, у меня это сработало - person AlfhaOmega; 15.06.2019