Sessão PHP e cookies PHP com exemplo
⚡ Resumo Inteligente
Cookies e sessões em PHP preservam o estado no protocolo HTTP sem estado, mas armazenam dados de maneiras diferentes. Este guia explica como os cookies salvam pequenos arquivos no cliente, como as sessões mantêm os dados no servidor e como criar, ler e destruir cada um deles com código funcional.

O que é biscoito?
Um cookie é um pequeno arquivo com tamanho máximo de 4 KB que o servidor web armazena no computador do cliente.
Depois que um cookie for definido, todas as solicitações de página seguintes retornarão o nome e o valor do cookie.
Um cookie só pode ser lido a partir do domínio que o emitiu. Por exemplo, um cookie definido usando o domínio www.guru99.com não pode ser lido a partir do domínio www.guru99.com. carreira.guru99.com.
A maioria dos sites na Internet exibe elementos de outros domínios, como publicidade. Os domínios que servem estes elementos também podem definir os seus próprios cookies. Estes são conhecidos como cookies de terceiros.
Um cookie criado por um usuário só pode ser visível para ele. Outros usuários não conseguem ver seu valor.
A maioria dos navegadores da web oferece opções para desativar cookies, cookies de terceiros ou ambos.
Nesse caso, o PHP responde passando o token do cookie no URL.
O diagrama mostrado abaixo ilustra como funcionam os cookies.
Aqui,
1) Um usuário solicita uma página que armazena cookies
2) O servidor define o cookie no computador do usuário
3) Outras solicitações de página do usuário retornarão o nome e o valor do cookie
Por que e quando usar Cookies?
- O HTTP é um protocolo sem estado; os cookies nos permitem tracO estado da aplicação é determinado por meio de pequenos arquivos armazenados no computador do usuário. O caminho onde os cookies são armazenados depende do navegador. O Internet Explorer geralmente os armazena na pasta Arquivos Temporários da Internet.
- Personalização da experiência do usuário – isso é conseguido permitindo que os usuários selecionem suas preferências. As solicitações de página subsequentes são personalizadas com base nas preferências definidas nos cookies.
- Tracking as páginas visitadas por um usuário
Criando Cookies
Vejamos agora a sintaxe básica usada para criar um cookie.
<?php setcookie(cookie_name, cookie_value, [expiry_time], [cookie_path], [domain], [secure], [httponly]); ?>
AQUI,
- “setcookie” é o Função PHP usado para criar o cookie.
- “cookie_name” é o nome do cookie que o servidor usará ao recuperar seu valor da variável de matriz $_COOKIE. É obrigatório.
- “cookie_value” é o valor do cookie e é obrigatório.
- O parâmetro “[expiry_time]” é opcional e pode ser usado para definir o tempo de expiração do cookie, como 1 hora. O tempo é definido usando a função time() do PHP, adicionando ou subtraindo um número de segundos maior que 0, ou seja, time() + 3600 para 1 hora.
- “[cookie_path]” é opcional; ele pode ser usado para definir o caminho do cookie no servidor. A barra “/” significa que o cookie será disponibilizado em todo o domínio. Os subdiretórios limitam o acesso do cookie ao subdomínio.
- “[domínio]” é opcional; pode ser usado para definir a hierarquia de acesso a cookies, ou seja,
www.cookiedomain.comsignifica todo o domínio enquantowww.sub.cookiedomain.comlimita o acesso aos cookies parawww.sub.cookiedomain.come seus subdomínios. - O parâmetro “[secure]” é opcional; o valor padrão é falso. Ele é usado para determinar se o cookie será enviado via HTTPS, caso esteja definido como verdadeiro, ou via HTTP, caso esteja definido como falso.
- “[httponly]” é opcional. Se estiver definido como verdadeiro, linguagens de script do lado do cliente, como JavaScript Não é possível acessar o cookie.
Observação: A função setcookie do PHP deve ser executada antes da tag de abertura do HTML.
Vejamos agora um exemplo que utiliza cookies.
Criaremos um programa básico que nos permitirá armazenar o nome de usuário em um cookie que expira após sessenta segundos.
O código abaixo mostra a implementação do exemplo acima “cookies.php”.
<?php setcookie("user_name", "Guru99", time()+ 60,'/'); // expires after 60 seconds echo 'the cookie has been set for 60 seconds'; ?>
Saída:
the cookie has been set for 60 seconds
Recuperando o valor do cookie
Crie outro arquivo chamado “cookies_read.php” com o seguinte código.
<?php
print_r($_COOKIE); // output the contents of the cookie array variable
?>
Saída:
Array ( [PHPSESSID] => h5onbf7pctbr0t68adugdp2611 [user_name] => Guru99 )
Nota: $_COOKIE é uma variável superglobal interna do PHP. Ela contém os nomes e valores de todos os cookies definidos.
O número de cookies e seu tamanho são limitados pelo navegador, normalmente em torno de 50 cookies por domínio e 4 KB por cookie.
Testando nossa aplicação. Vamos supor que você tenha salvo seus arquivos PHP em uma pasta phptuts.
- Passo 1 – abra seu navegador e digite o URL http://localhost/phptuts/cookies_read.php
Nota: Apenas uma matriz vazia foi exibida
- Passo 2 – navegue até o URL http://localhost/phptuts/cookies.php
- Passo 3 – volte para a primeira aba e clique no botão de atualizar.
Aguarde um minuto e clique novamente no botão de atualizar. Quais resultados você obteve?
Apagar cookies
- Se você quiser destruir um cookie antes do prazo de validade, defina o prazo de validade como um tempo que já passou.
- Crie um novo arquivo chamado cookie_destroy.php com o seguinte código.
<?php setcookie("user_name", "Guru99", time() - 360,'/'); ?>
- Repita os passos 1 a 3 da seção anterior sobre como recuperar os valores dos cookies.
- Abra o URL http://localhost/phptuts/cookie_destroy.php
- Mudar para o URL http://localhost/phptuts/cookies_read.phpQue resultados são exibidos?
O que é uma Sessão?
- Uma sessão é uma variável global armazenada no servidor.
- Cada sessão recebe um ID exclusivo que é usado para recuperar valores armazenados.
- Sempre que uma sessão é criada, um cookie contendo o ID de sessão exclusivo é armazenado no computador do usuário e retornado a cada solicitação ao servidor. Se o navegador do cliente não suportar cookies, o ID de sessão PHP exclusivo será exibido no navegador. URL.
- As sessões têm a capacidade de armazenar dados relativamente grandes em comparação com os cookies.
- Os valores da sessão são excluídos automaticamente quando o navegador é fechado. Se quiser armazenar os valores permanentemente, você deve armazená-los no banco de dados.
- Assim como a variável de array $_COOKIE, as variáveis de sessão são armazenadas na variável de array $_SESSION. Assim como os cookies, a sessão deve ser iniciada antes de qualquer tag HTML.
Por que e quando usar sessões?
- Você deseja armazenar informações importantes, como o ID do usuário, de forma mais segura no servidor, onde usuários mal-intencionados não possam adulterá-las.
- Você deseja passar valores de uma página para outra.
- Você deseja uma alternativa aos cookies em navegadores que não os suportam.
- Você deseja armazenar variáveis globais de forma eficiente e mais segura em comparação com passá-las como argumento? URL.
- Você é desenvolvedorping um aplicativo como uma lojaping Carrinho que precisa armazenar temporariamente informações com capacidade superior a 4 KB.
Criando uma sessão
Para criar uma sessão, primeiro você deve chamar a função `session_start` do PHP e, em seguida, armazenar seus valores na variável de matriz `$_SESSION`.
Suponhamos que queiramos saber quantas vezes uma página foi carregada. Podemos usar uma sessão para isso.
O código abaixo mostra como criar e recuperar valores de sessões.
<?php session_start(); // start the session if(isset($_SESSION['page_count'])) { $_SESSION['page_count'] += 1; } else { $_SESSION['page_count'] = 1; } echo 'You are visitor number ' . $_SESSION['page_count']; ?>
Saída:
You are visitor number 1
Destruindo variáveis de sessão
A função session_destroy() é usada para destruir toda a sessão do PHP.
Se você deseja destruir apenas um único item de sessão, use a função unset().
O código abaixo ilustra como usar os dois métodos.
<?php
session_destroy(); // destroy entire session
?>
<?php unset($_SESSION['product']); // destroy product session item ?>
session_destroy remove todos os dados da sessão, incluindo os cookies associados à sessão.
unset libera apenas as variáveis de sessão individuais. Os demais dados permanecem intactos.




