2016-01-20 7 views
0

Я пытаюсь следовать за youtube tuts для создания системы входа в CodeIgniter. Я был довольно новым в php framework, и я выбрал CI для его сближения. Так у меня есть массив, где нужно хранить данные сеанса:сеанс на CodeIgniter 3, userdata или нет?

$data = array('email' => $this->input->post('email'), 
      is_logged_in' => true); 

в учебник использовать UserData(); функция

$this->session->userdata($data); 

но когда он попытке напечатать де массива сессии сделать:

print_r($this->session->all_userdata($data)); 

alluserdata(); устарел, поэтому я прочитал документ, и я узнал, что userdata является устаревшей функцией. Я хочу узнать, что я пишу, поэтому я стараюсь модернизировать код для обновления и очистки для CI3.

- использование userdata(); хорошо для CI3? или мне нужно использовать $ _SESSION []? или $ this-> session?

проблемы в том, что если я пытаюсь использовать

$ this-> session-> Данные

и чем:

print_r($this->session->data); 

Я не имею ничего выхода. Я просто хочу вывести массив данных в сеанс, чтобы я мог понять, работает ли он. Спасибо заранее

EDIT , если я использую set_userdata() для заданной сессии и только print_r ($ this-> session-> UserData()); для печати все, что у меня есть:

Array 
(
    [__ci_last_regenerate] => 1453313633 
    [email] => [email protected] 
    [is_logged_in] => 1 
) 

а не информация о браузере, время ecc ... это нормально?

ответ

2

В Codignitor 3 вы можете получить значения из $ this-> сессия obejct, как:

//Normal PHP  
$name = $_SESSION['name'];  

// IN Ci:  
$name = $this->session->name  

// you can also get by 
$name = $this->session->userdata('name'); 

И что не так с кодом?

Вы используете объект сеанса, как

$this->session->data 

Это должно быть

$this->session->userdata 

является использование UserData(); хорошо для CI3? или мне нужно использовать _SESSION []?

Для этого да, лучше использовать фреймворк libaray, потому что вы можете легко управлять и повторно использовать свой код.

+2

Что касается 'userdata()' vs '$ _SESSION []': Основное преимущество использования '$ this-> session-> userdata ('item'); 'заключается в том, что функция выполняет проверку того, что« элемент »является допустимым ключом. То же самое верно для магических геттеров (т. Е. '$ Item = $ this-> session-> item;'). Все эти функции и многие другие в библиотеке сеансов работают непосредственно с массивом '$ _SESSION'. Поэтому нет ничего плохого в использовании '$ _SESSION' напрямую. – DFriend

+0

спасибо Я буду вам userdata(), тогда я думаю, это более читаемо, чем использование только волшебного геттера ... – Psygno

3

Набор данных сессии

$newdata = array('email' => $email, 'is_logged_in' => true); 
$this->session->set_userdata($newdata); 

Получить данные сессии

$email = $this->session->userdata('email'); 
$is_logged_in = $this->session->userdata('is_logged_in'); 

ИЛИ

$dataArray = $this->session->userdata(); 
+0

спасибо, что я сказал, что буду использовать userdata() вместо магического геттера, если они равны, я думаю, userdata(); более читается, а затем просто $ this-> session-> item – Psygno

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