CodeIgniter - Gerenciamento de Sessão
Ao construir sites, muitas vezes precisamos rastrear a atividade e o estado do usuário e, para isso, temos que usar session. CodeIgniter tem aula de sessão para este propósito.
Inicializando uma Sessão
Os dados das sessões estão disponíveis globalmente por meio do site, mas para usar esses dados, primeiro precisamos inicializar a sessão. Podemos fazer isso executando a seguinte linha no construtor.
$this->load->library('session');
Depois de carregar a biblioteca de sessão, você pode simplesmente usar o objeto de sessão conforme mostrado abaixo.
$this->session
Adicionar dados da sessão
Em PHP, simplesmente usamos $_SESSION array para definir quaisquer dados na sessão, conforme mostrado abaixo.
$_SESSION[‘key’] = value;
Onde 'key'é a chave de array e value é atribuído no lado direito de igual ao sinal.
A mesma coisa pode ser feita no CodeIgniter conforme mostrado abaixo.
$this->session->set_userdata('some_name', 'some_value');
set_userdata()função leva dois argumentos. O primeiro argumento,some_name, é o nome da variável de sessão, sob a qual, some_value será armazenado.
set_userdata() A função também suporta outra sintaxe na qual você pode passar array para armazenar valores como mostrado abaixo.
$newdata = array(
'username' => 'johndoe',
'email' => '[email protected]',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
Remover dados da sessão
No PHP, podemos remover os dados armazenados na sessão usando o unset() função conforme mostrado abaixo.
unset($_SESSION[‘some_name’]);
Remover os dados da sessão no CodeIgniter é muito simples, conforme mostrado abaixo. A versão abaixo deunset_userdata() função irá remover apenas uma variável da sessão.
$this->session->unset_userdata('some_name');
Se você deseja remover mais valores da sessão ou remover um array inteiro, você pode usar a versão abaixo do unset_userdata() função.
$this->session->unset_userdata($array_items);
Buscar dados da sessão
Depois de definir os dados na sessão, também podemos recuperar esses dados conforme mostrado abaixo. Userdata()função será usada para este propósito. Esta função irá retornarNULL se os dados que você está tentando acessar não estiverem disponíveis.
$name = $this->session->userdata('name');
Exemplo
Crie uma classe de controlador chamada Session_controller.php e salve em 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');
}
}
?>
Crie um arquivo de visualização chamado session_view.php e salve em 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>
Faça as alterações no routes.php arquivo em application/config/routes.php e adicione a seguinte linha no final do arquivo.
$route['sessionex'] = 'Session_Controller';
Execute o exemplo acima usando o seguinte endereço. Substituiryoursite.com com a URL do seu site.
http://yoursite.com/index.php/sessionex