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 são cookies: Um cookie é um pequeno arquivo, de até 4 KB, que o servidor armazena no cliente e que é retornado a cada solicitação posterior.
  • 🗄️ O que são as sessões: Uma sessão armazena dados no servidor sob um ID único, mantido na matriz $_SESSION e referenciado por um cookie de sessão.
  • 🆚 Diferença chave: Os cookies residem no cliente e são adequados para dados pequenos e não sensíveis; as sessões residem no servidor e armazenam dados maiores ou privados.
  • 🛠️ Criando Cookies: A função setcookie() define um nome, um valor e, opcionalmente, as flags de expiração, caminho, domínio, segurança e somente HTTP antes de qualquer saída HTML.
  • 📝 Criação de sessões: session_start() inicia uma sessão, após a qual você lê e grava valores através da matriz superglobal $_SESSION.
  • 🗑️ Limpando: Expire um cookie definindo um tempo passado; encerre uma sessão com session_destroy() ou limpe um valor com unset().
  • 🤖 Assistência de IA: As ferramentas de IA podem implementar o gerenciamento seguro de sessões e sinalizar vulnerabilidades em cookies ou sessões no código PHP existente.

Cookies e sessões em PHP

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.

O que é biscoito

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.com significa todo o domínio enquanto www.sub.cookiedomain.com limita o acesso aos cookies para www.sub.cookiedomain.com e 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

Recuperando o valor do cookie

Nota: Apenas uma matriz vazia foi exibida

  • Passo 2 – navegue até o URL http://localhost/phptuts/cookies.php

Recuperando o valor do cookie

  • Passo 3 – volte para a primeira aba e clique no botão de atualizar.

Recuperando o valor do cookie

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.

Perguntas Frequentes

Os cookies armazenam dados em um pequeno arquivo no navegador do usuário e são enviados a cada requisição. As sessões armazenam dados no servidor e enviam apenas um cookie com o ID da sessão. As sessões são mais seguras para dados sensíveis ou em grande quantidade.

Por padrão, o PHP salva os dados da sessão como arquivos no caminho definido por `session.save_path` no arquivo `php.ini`, geralmente o diretório temporário do sistema. Sites com alto tráfego costumam usar um banco de dados, Redis ou Memcached para esse fim.

Defina o sinalizador HttpOnly para JavaO script não pode ler o cookie, o sinalizador Secure garante que a comunicação seja feita apenas por HTTPS e o atributo SameSite limita o envio entre sites. Para sessões, o ID é regenerado após o login.

Sim. A IA pode gerar um fluxo de login que regenera o ID da sessão, define sinalizadores de cookies seguros, armazena dados mínimos no servidor e impõe tempos limite. RevCompare o resultado com seus requisitos de segurança.

Sim. A IA pode verificar a ausência de flags HttpOnly ou Secure, riscos de fixação de sessão, armazenamento de dados sensíveis em cookies e ausência de regeneração de ID após o login, sugerindo então o código corrigido.

Resuma esta postagem com: