Académique Documents
Professionnel Documents
Culture Documents
& session
Leonardo Sibela
Maromo
HTTP, um protocolo stateless
Se em um momento um formulário foi submetido, seus dados foram apenas enviados naquela
requisição e assim que ela é resolvida, os dados são perdidos
Também devemos lembrar que os dados do usuário que realizou a requisição também é perdido,
ou seja, na próxima requisição não temos como saber quem realizou a requisição anterior
Cloud Firestore
O que ou Realtime Database
não é staless?
Porque armazenar dados entre as
requisições?
Preferências como idioma, quantos resultados de pesquisa o usuário deseja que sejam exibidos
por página, safesearch, localização etc…
Publicidade: Usamos cookies para tornar a publicidade mais envolvente para os usuários e mais
valiosa para editores e anunciantes.
Existem várias coisas que podem ser armazenadas utilizando cookies. A regra é que se um dado
é sigiloso, ele não deve ser armazenado em um cookie, tanto por ficar visível para o usuário
quanto pelo fato de poder ser alterado pelo mesmo.
setar um cookie
Para setar um cookie, usamos a função setcookie que irá receber como parâmetros
Algumas coisas extras que valem à pena saber sobre cookies são:
● Podemos omitir a data de expiração e o cookie irá expirar quando o usuário fechar o
navegador (não funciona se ele fechar apenas a aba)
● Podemos informar mais dois parâmetros para o set cookie sendo o primeiro o caminho a o
qual o cookie será usado dentro da aplicação e o segundo o domínio o qual no qual ele
será usado. Normalmente não informamos esses valores.
● O método setcookie retorna true ou false para informar se o cookie foi ou não setado e
ele só retorna false "se existe uma chamada de output antes da chamada dessa função".
Funcionamento
RESPONSE: O servidor informa REQUEST: O cliente informa os cookies que estão salvos e
os cookies que precisam ser criados ainda não expiraram
Set-Cookie: tasty_cookie=strawberry
Pegando o dado em um cookie
Dados armazenados usando cookie são referenciados pela variável superglobal $_COOKIE
Essa variável nada mais é do que um array associado, portanto podemos verificar se um dado
existe no cookie da seguinte forma:
<?php if (isset($_COOKIE["loged_user"])) {
$_COOKIE["loged_user"]
Limpando um dado do cookie
Esse código irá remover o dado armazenado na variável cookie APENAS da chamada atual
Criar uma tela de login que redirecione o usuário para a home com uma tela de boas vindas
customizada com o nome do usuário logado caso ele digite o usuário e a senha corretas. Caso
não esteja logado, ele deve ser redirecionado sempre para a tela de login.
Além disso, se ele digitar algo errado no login (seja no usuário ou na senha), ele deve ser
redirecionado para tela de login com uma mensagem de erro “Usuário ou senha inválidos”.
OBS: Para redirecionar o usuário para uma tela usamos a seguinte instrução:
header("Location: login.php");
E para garantir que nada mais seja executado no arquivo, chamamos a função die()
Session
Sessão
Garante uma maior segurança, uma vez que o usuário não tem acesso a ela
Normalmente é usado junto com um cookie onde esse irá armazenar um identificador único
para a sessão do usuário
Trabalhando com a sessão
sessionStart()
Deve ser usada em todos os arquivos em que for necessário trabalhar com a sessão
.
$_SESSION
Variável superglobal que representa a sessão (onde guardamos os valores desejados)
.
session_destroy();
Deve ser usada quando queremos destruir a sessão (eliminando todos os dados)
.
$_SESSION["loged_user"]
É um array associado, portanto trabalhamos com ele como tal
Status da Sessão
Existem diferentes formas de verificar se a sessão não está ativa em diferente versões do PHP:
Criar uma tela de login que redirecione o usuário para a home com uma tela de boas vindas
customizada com o nome do usuário logado caso ele digite o usuário e a senha corretas. Caso
não esteja logado, ele deve ser redirecionado sempre para a tela de login.
Além disso, se ele digitar algo errado no login (seja no usuário ou na senha), ele deve ser
redirecionado para tela de login com uma mensagem de erro “Usuário ou senha inválidos”.
Além disso, criar um link de logout na home onde teremos que destruir a sessão e direcioná-lo
para a tela de login.
Interessado em cookies e sessão?
Quem estiver interessado, Klaus Laube tem uma postagem muito boa em
português que fala mais sobre esses dois assuntos