Criar, Ler, Alterar, Verificar e Deletar Cookies no PHP
- Detalhes
- Angelo Luis Ferreira
- PHP
- Acessos: 19444
Neste tutorial vamos mostrar como manipular cookies utilizando o PHP. Veremos como criar, ler, alterar e deletar cookies através de uma página PHP. Mas afinal, o que são um cookies?
Cookies são pequenos arquivos incorporados pelo servidor no computador do usuário. Servem para trocar dados entre o navegador do usuário e o servidor da página que o criou.
O cookie ficará disponível pelo tempo que o desenvolvedor do site definir. Portanto, se o cookie estiver válido, ou seja, disponível, ele poderá ser acessado em seu código mesmo que o cliente feche o navegador ou desligue o computador. No próximo acesso, os dados estarão disponíveis novamente para consulta. O cookie será automaticamente apagado quando a data determinada expirar.
O cookie pode ser utilizado na criação de carrinho de compras em sites de e-commerce, banners rotativos sem repetição, visitas de usuários, últimas buscas, botões de curtidas, etc.
Atenção.: Cookies podem apresentar problemas como: o usuário apagar os cookies do navegador, ou o computador ser formatado, ou até mesmo o usuário bloquear a utilização de cookies pelo navegador.
1 - Como criar cookies
1.1. A função PHP utilizada para criar cookies é setcookie(). Veja abaixo sua sintaxe:
Sintaxe:
setcookie(nome, valor, expira);
onde:
nome: Nome do cookie necessário para acessar as informações armazenadas.
valor: Informações que queremos gravar no cookie.
expira: Tempo em que o cookie deverá ficar armazenado no computador do cliente. Este tempo é indicado sempre em segundos.
Para definir o tempo de duração do cookie, vamos utilizar a função time(), tempo atual mais o tempo de vida do cookie em segundos.
Nota1: 3.600 segundos = 1 hora | 86.400 = 1 dia
Nota2: Se o tempo de duração do cookie for configurado como 0, ou omitido, o cookie irá expirar ao fim da sessão (quando o navegador fechar).
Obs.: Existem ainda mais quatro parâmetros (pouco comuns) que você poderá utilizar (Documento oficial PHP).
1.2. Para ler o(s) valor(es) de um cookie utilizamos a variável "superglobal" $_COOKIE[]. Veja a sintaxe abaixo:
Sintaxe:
$_COOKIE['nome"]
onde:
nome: Nome do cookie que foi criado pela função setcookie().
1.2. Veja abaixo o exemplo onde criamos e recuperamos o cookie "site":
<?php
$cookie_name = "site";
$cookie_value = "Portal Visual Dicas";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30)); // 86400 = 1 dia
if(!isset($_COOKIE[$cookie_name])) { // verifica se o cookie_name está definido
echo "O cookie'" . $cookie_name . "' não está definido!";
} else {
echo "O valor do cookie '" . $cookie_name . "' é ".$_COOKIE['site']." !<br>";
}
Veja como ficou o no exemplo no phpfidle.
2 - Como alterar cookies
2.1. Para alterar os valores de um cookie, basta enviar novamente o cookie utilizando a função setcookie():
2.2. Exemplo de alteração de um cookie:
<?php
$cookie_name = "site";
$cookie_value = "Squids Arduino";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30)); // 86400 = 1 dia
if(!isset($_COOKIE[$cookie_name])) { // verifica se o cookie_name está definido
echo "O cookie'" . $cookie_name . "' não está definido!";
} else {
echo "O valor do cookie '" . $cookie_name . "' mudou para ".$_COOKIE['site']." !<br>";
}
Veja como ficou o no exemplo no phpfidle.
3 - Verificar se o cookie está ativo
3.1. O exemplo abaixo mostra como podemos verificar se um cookie está ativo ou não.
<?php
if(count($_COOKIE) > 0) {
echo "Cookies estão ativos.";
} else {
echo "Cookies não estão ativos.";
}
Veja como ficou o no exemplo no phpfidle.
4 - Como deletar um cookie
4.1. Para deletar um cookie basta colocar um tempo de expiração negativo ou definir o valor como vazio. Veja a sintaxe abaixo:
setcookie(nome, '', time()-3600); // tempo negativo e/ou valor vazio ('')
4.2. Veja o exemplo abaixo:
<?php
setcookie('site', '', time()-3600); // tempo negativo e/ou valor vazio
//verifica se o cookie está definido
if(!isset($_COOKIE['site'])) { // verifica se o cookie_name está definido
echo "O cookie 'site' não está definido!<br>";
} else {
echo "O valor do cookie 'site' é ".$_COOKIE['site']." !<br>";
}
if(count($_COOKIE) > 0) { // verifica se o cookie está ativo
echo "O cookie está ativo.";
} else {
echo "O cookie não está ativo.";
}
Veja como ficou o no exemplo no phpfidle.
Documentação Oficial
1. [Documentação PHP - função setcookie()] » Sobre a função setcookie() - envia um cookie".
2. [Documentação PHP - $_COOKIE] » Variável superglobal $_COOKIE.