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