2013-07-19 2 views
0

Мое приложение - PHP/CodeIgniter/TankAuth.Tank_auth сеансы: иногда «-> ci», а иногда нет

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

Баланс меняется только при входе в систему при определенных условиях. Таким образом, в компонентах tank_auth есть контроллер, библиотека и т. Д. Поток заключается в том, что логин авторизатора Auth вызывает функцию входа в систему Tank_auth, где создается сеанс, а затем вызывает модель для обновления информации для входа (IP адрес, последний логин и т. д.) Это все из коробки.

Итак, я расширил аспекты сеанса в библиотеке, добавив собственные данные пользователя account_balance. что хорошо, но проблема в том, когда баланс меняется, мои данные сеанса «отстают», и я действительно изо всех сил пытаюсь понять, как его обновить.

Первая попытка - просто попытаться обновить информацию о сеансе после обновления моей базы данных в модели пользователей (стандартная модель Tank_Auth). Это не работает, давая мне ошибку.

После некоторых экспериментов я понял, что я не понимаю, о чем это. :

echo $this->session->userdata('ip_address');  //works fine - no errors 
echo $this->ci->session->userdata('ip_address'); //fail 

Модули Tank_auth (библиотека, контроллеры, модели и т.д.) иногда называют CI-> сеансов, а иногда нет, но он использует оба.

В классе конструкторов, он также использует:

$this->ci =& get_instance(); //in the library 
$ci =& get_instance();  //in the model 

Я получаю 2 ошибки:

  • сообщение: Не определено свойство: Auth :: $ CI
  • Попытка получить имущество не-объекта

У меня создалось впечатление, что вы будете использовать сеансы CI, поскольку он имеет некоторые приятные функции, или нет, если они не хотят их. Но используя оба .....?

Что мне не хватает?

Заранее спасибо.

ответ

1
//if you are using get_instance() in codeigniter then user following syntax to write code: 
$ci =& get_instance(); 
echo $ci->session->userdata("ip_address"); 
+0

То, что я пытаюсь понять, разница между $ this-> сессией и $ this-> CI-> сессией – Maxcot

+0

Обычно в наших функциях контроллера мы называем любые из доступных функций CodeIgniter, используя эту конструкцию $ и функция get_instance возвращает суперъект CodeIgniter, поэтому либо мы используем эту конструкцию, либо супер-переменную объекта define by & get_instance() –

+0

В руководстве пользователя CodeIgniter говорится, что класс сеанса CI НЕ использует собственные PHP-сессии. Итак, если «$ this-> ci-> session» является классом Session Code Session Session, а «$ this-> session» - это собственный класс сеанса PHP, то эта библиотека Tank_Auth фактически использует оба ... правильно? Зачем это делать? – Maxcot

Смежные вопросы