Aula 11 - Entendendo e utilizando sessão
1- Introdução
Nessa aula você irá começar a compreender uma forma de persistência de dados muito utilizada para armazenar dados temporariamente. Essa forma de persistência é chamada de sessão e a maioria das linguagens de programação implementam essa funcionalidade.
O primeiro conceito importante a ser trabalhado aqui são os Cookies. A maioria das pessoas já ouviu falar nos cookies, porém, não sabem definir direito por quê eles existem.
Uma definição simples e rápida para os conceitos de cookie e sessão é:
Muitos apenas definem como “persistências temporárias” feitas no lado do usuário, e sessões são persistências dependentes de cookies, mas realizadas no lado do servidor.
Para que servem Cookies e Sessões?
O protocolo HTTP é Stateless, ou seja, ele não mantém um estado/conexão. Toda a interação que o seu cliente fizer com um servidor web acarretará em uma nova requisição e resposta.
As requisições são independentes e possuem um tempo de vida (conexão, envio de mensagem, resposta, encerramento da conexão). O servidor web não é capaz de identificar se duas requisições vieram de um mesmo navegador, e o mesmo não faz nenhum gerenciamento em memória para que mensagens sejam compartilhadas entre requisições. É para suprir esta necessidade que entram os cookies e sessões.
Cookies
Através de cookies o servidor web é capaz de trocar informações de estado com o navegador do usuário. Desse modo, somos capazes de adicionar produtos a um carrinho de compras, sem perder estas informações ao mudar de página, sair do website ou até mesmo fechar o navegador.
Tecnicamente falando, um cookie é uma pequena quantidade de informação persistida temporariamente pelo navegador. Os navegadores normalmente limitam o tamanho dos cookies em até 4KB, e apagam cookies com a data de “validade vencida”.
Exemplo de Cookie usando PHP
Para entender como essa troca de informação é feita, vamos criar um cookie com o PHP:
<?php
// cookies.php
if (isset($_COOKIE['cookie_teste'])) {
echo 'Você JÁ passou por aqui!';
} else {
echo 'Você NUNCA passou por aqui.';
setcookie('cookie_teste', 'Algum valor...', time() + 3600);
}
?>
O código acima verifica se o cookie atendendo pelo identificador cookie_teste já existe, caso não exista, cria um cookie com identificador cookie_teste, valor Algum valor... e com 1 hora de vida (a hora atual mais 3600 segundos).
Esse cookie é persistido pelo navegador e é possível de ser acessado nas configurações de request:
Sessões
As sessões têm um princípio similar aos cookies, só que o armazenamento do estado é feito pelo servidor web, e não pelo navegador. Por exemplo, quando construímos uma aplicação que necessita de autenticação, no momento em que o usuário efetuar o login, podemos até permitir que algumas informações sejam armazenadas em um cookie, mas dados mais “sensíveis”, como usuário e e-mail, são mais interessantes de serem guardadas em sessões. Isto, pois não é seguro que esse tipo de informação fique “viajando” pela web.
Mas se o HTTP é stateless, e o servidor web não tem como identificar que a requisição anterior veio do meu browser, como é que ele sabe que as informações que eu guardei em sessão são de fato minhas? Simples… através de cookies!
Quando iniciamos uma sessão, é enviado um cookie para o navegador, com um valor único que corresponde a sessão aberta no servidor web.
Veja um exemplo de como usar Sessões em PHP:
<?php
// sessions.php
session_start();
if (isset($_SESSION['usuario'])) {
echo "Bem vindo {$_SESSION['usuario']}!";
} else {
echo 'Você NUNCA passou por aqui.';
$_SESSION['usuario'] = 'João';
}
?>
Post a Comment