Учебники

CodeIgniter — Управление сессиями

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

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

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

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

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

$this->session

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

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

$_SESSION[‘key’] = value;

Где ключ — это ключ массива, а значение присваивается справа от знака равенства.

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

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

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

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

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => 'johndoe@some-site.com', 
   '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>

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

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

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