CodeIgniter - Управление сеансом

При создании веб-сайтов нам часто необходимо отслеживать активность и состояние пользователя, и для этой цели мы должны использовать session. В CodeIgniter для этого есть класс сеанса.

Инициализация сеанса

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

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

После загрузки библиотеки сеанса вы можете просто использовать объект сеанса, как показано ниже.

$this->session

Добавить данные сеанса

В PHP мы просто используем $_SESSION массив для установки любых данных в сеансе, как показано ниже.

$_SESSION[‘key’] = value;

Где 'key'- ключ массива и value стоит справа от знака равенства.

То же самое можно сделать в CodeIgniter, как показано ниже.

$this->session->set_userdata('some_name', 'some_value');

set_userdata()функция принимает два аргумента. Первый аргумент,some_name, это имя переменной сеанса, под которой, some_value будут храниться.

set_userdata() функция также поддерживает другой синтаксис, в котором вы можете передать массив для хранения значений, как показано ниже.

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => '[email protected]', 
   'logged_in' => TRUE
);  

$this->session->set_userdata($newdata);

Удалить данные сеанса

В PHP мы можем удалить данные, хранящиеся в сеансе, используя unset() работают, как показано ниже.

unset($_SESSION[‘some_name’]);

Удалить данные сеанса в CodeIgniter очень просто, как показано ниже. Приведенная ниже версияunset_userdata() функция удалит только одну переменную из сеанса.

$this->session->unset_userdata('some_name');

Если вы хотите удалить больше значений из сеанса или удалить весь массив, вы можете использовать приведенную ниже версию unset_userdata() функция.

$this->session->unset_userdata($array_items);

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

После установки данных в сеансе мы также можем получить эти данные, как показано ниже. Userdata()для этого будет использована функция. Эта функция вернетNULL если данные, к которым вы пытаетесь получить доступ, недоступны.

$name = $this->session->userdata('name');

пример

Создайте класс контроллера с именем Session_controller.php и сохраните это в application/controller/Session_controller.php.

<?php 
   class Session_controller extends CI_Controller {
	
      public function index() { 
         //loading session library 
         $this->load->library('session');
			
         //adding data to session 
         $this->session->set_userdata('name','virat');
			
         $this->load->view('session_view'); 
      } 
		
      public function unset_session_data() { 
         //loading session library
         $this->load->library('session');
			
         //removing session data 
         $this->session->unset_userdata('name'); 
         $this->load->view('session_view'); 
      } 
		
   } 
?>

Создайте файл представления с именем session_view.php и сохраните это в application/views/session_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Session Example</title> 
   </head>
	
   <body> 
      Welcome <?php echo $this->session->userdata('name'); ?> 
      <br> 
      <a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
         Click Here</a> to unset session data. 
   </body>
	
</html>

Внесите изменения в routes.php файл в application/config/routes.php и добавьте следующую строку в конец файла.

$route['sessionex'] = 'Session_Controller';

Выполните приведенный выше пример, используя следующий адрес. Заменитьyoursite.com с URL-адресом вашего сайта.

http://yoursite.com/index.php/sessionex