CodeIgniter - zarządzanie sesjami

Budując serwisy internetowe często musimy śledzić aktywność i stan użytkownika iw tym celu musimy korzystać session. CodeIgniter ma do tego celu klasę sesji.

Inicjowanie sesji

Dane sesji są dostępne na całym świecie za pośrednictwem witryny, ale aby z nich skorzystać, musimy najpierw zainicjować sesję. Możemy to zrobić, wykonując następujący wiersz w konstruktorze.

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

Po załadowaniu biblioteki sesji możesz po prostu użyć obiektu sesji, jak pokazano poniżej.

$this->session

Dodaj dane sesji

W PHP po prostu używamy $_SESSION tablica, aby ustawić dowolne dane w sesji, jak pokazano poniżej.

$_SESSION[‘key’] = value;

Gdzie 'key'to klucz tablicy i value jest przypisany po prawej stronie znaku równości.

To samo można zrobić w CodeIgniter, jak pokazano poniżej.

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

set_userdata()funkcja przyjmuje dwa argumenty. Pierwszy argument,some_name, to nazwa zmiennej sesyjnej, pod którą some_value będą przechowywane.

set_userdata() funkcja obsługuje również inną składnię, w której można przekazać tablicę do przechowywania wartości, jak pokazano poniżej.

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

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

Usuń dane sesji

W PHP możemy usunąć dane zapisane w sesji za pomocą rozszerzenia unset() działają, jak pokazano poniżej.

unset($_SESSION[‘some_name’]);

Usuwanie danych sesji w CodeIgniter jest bardzo proste, jak pokazano poniżej. Poniższa wersjaunset_userdata() funkcja usunie tylko jedną zmienną z sesji.

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

Jeśli chcesz usunąć więcej wartości z sesji lub usunąć całą tablicę, możesz użyć poniższej wersji unset_userdata() funkcjonować.

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

Pobierz dane sesji

Po ustawieniu danych w sesji możemy również odzyskać te dane, jak pokazano poniżej. Userdata()W tym celu zostanie wykorzystana funkcja. Ta funkcja zwróciNULL jeśli dane, do których próbujesz uzyskać dostęp, nie są dostępne.

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

Przykład

Utwórz klasę kontrolera o nazwie Session_controller.php i zapisz go w 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'); 
      } 
		
   } 
?>

Utwórz plik widoku o nazwie session_view.php i zapisz go w 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>

Wprowadź zmiany w routes.php plik w application/config/routes.php i dodaj następujący wiersz na końcu pliku.

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

Wykonaj powyższy przykład, używając następującego adresu. Zastąpićyoursite.com z adresem URL swojej witryny.

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