Я хотел использовать сессию CI во внешнем скрипте, и я получил следующие данные из базы данных.
__ci_last_regenerate|i:1446535049;ci_UserID|s:1:"2";ci_UserName|s:24:"example@xyz.com";logged_in|b:1;
Я попробовал unserialize
и unserialize(base64_decode($data))
но я еще не unserialize(base64_decode($data))
.
Пожалуйста, помогите извлечь эти данные.
Я получил решение здесь
Поэтому я использовал сеансовое декодирование
session_decode('__ci_last_regenerate|i:1446535049;ci_UserID|s:1:"2";ci_UserName|s:24:"example@xyz.com";logged_in|b:1;');
Таким образом, декодер сеанса хранит все зашифрованные данные в обычном сеансе php.
Я могу получить доступ с помощью: echo $_SESSION['ci_UserID'];
Ну, ребята, спасибо за помощь
Если это переменная сеанса, вы можете использовать собственную сессионную библиотеку CodeIgniter. Рассмотрим следующий код (в контроллере):
$this->load->library('session'); // load the session library $session_data = $this->session->all_userdata(); // get all session data print_r($session_data); // print and get the corrresponding variable name, eg "item" $var = $this->session->userdata('item'); // pick one that suits your needs, eg item
Извините, я прочитал «внешний скрипт» только после размещения кода. Это, очевидно, работает только в рамках CI.
Для внешнего скрипта вам может потребоваться более пристальный взгляд. Переменные разделяются символом ";" и "|" и затем сериализуется, так что это может работать (не проверено):
$row = explode(';', '__ci_last_regenerate|i:1446535049;ci_UserID|s:1:"2";ci_UserName|s:24:"example@xyz.com";logged_in|b:1;'); // load the database row $userid = explode('|', $row[1]); $userid = unserialize($userid[1]); // now $userid holds the value "2"