Como Criar, Ler e Excluir Cookies com PHP


Cookie é uma palavra inglesa que significa: biscoito, bolacha, mas neste contexto cookie representa um arquivo de texto que é salvo no computador do usuário quando ele acessa um determinado site. O termo Cookie ou o menos usado Testemunho, foi uma ideia da Netscape — lembram-se do antigo navegador web Netscape? Não sei lhe precisar exatamente o ano que os cookies começaram a ser utilizados, mas creio que isso não é tão importante. O que importa para nós é saber o que eles são, sua função e como trabalhar com eles. Neste artigo, além de explicar o que são cookies, também vou dar-lhe alguns exemplos de como trabalhar com cookies no PHP.

O que são Cookies: Função

A função dos Cookies é guardar dados dos usuários em seus próprios computadores. Por exemplo, há sites de lojas virtuais onde você coloca produtos no carrinho de compras porém não conclui o pedido. Voltando a tais sites dias depois, você nota admirado que os produtos que você havia posto no carrinho de compras ainda estão lá. Isso é feito, na maioria dos casos, usando cookies. A loja guarda nos cookies os produtos que você colocou no carrinho, então quando você vota ao site deles, eles lêem o cookie que ficou salvo em teu computador e sabem por isso exatamente quais produtos você quase comprou.

Os cookies são usados amplamente para guardar informações diversas sobre os usuários que acessam determinados web sites. Por exemplo, há sites que usam cookies para as seguintes funções:

– Guardar nome dos usuários
– Guardar nome e senha dos usuários (mantém o usuário logado infinitamente ou por tempo pré-definido)
– Guardar produtos que o usuário pôs no carrinho de compras ou visitou recentemente
– Guardar configurações que o usuário efetuou no site.
– Guardar Código de Afiliado que indicou o Usuário.
– ETC.

Cookies e os Programas de Afiliados

Os cookies são um fator importantíssimo para quem trabalha com Programas de Afiliados, fator este que pode definir o sucesso ou fracasso em algum sistema. A maioria dos programas de afiliados trabalham com cookies para armazenar o código do afiliado que indicou um potencial comprador. Assim sendo, vamos supor que você seja membro de um programa de afiliados que trabalhe com cookies com tempo de vida de 6 meses, então quando um usuário acessar o site através do link de afiliado teu e não fazer a compra, caso este usuário retorne ao site da empresa em até 6 meses e conclua a compra, o site identificará que foi uma venda indicada por você e pagará tua devida comissão. Dito isto é fácil entender porque o petencial de conversão é muito maior para programas de afiliados que trabalham com cookies com tempo de vida de 3 meses ou mais.

Quando você for entrar em um programa de afiliados, embora esquecido ou desconhecido por vários, é imprescindível saber se tal empresa trabalha com cookies e qual é o tempo de vida do cookie. Ora, isso se refere diretamente com o potencial de conversões e de posteriores ganhos que você terá com tal sistema. Como pode usuários que trabalham com programas de afiliados não se interessarem por isto? Boa pergunta, não!?

Outro detalhe interessante é que cada empresa pode definir um comportamento diferente para os cookies. Vejamos alguns:

– Pode-se definir a data e horário exato que o cookie irá expirar.
– Pode-se definir para que o cookie nunca expire. Terá vida eterna até que o usuário limpe-o manualmente
– Pode-se definir que o cookie se renove a cada acesso ao site. Por exemplo, dado que um cookie possua 3 dias de vida, no segundo dia após o primeiro acesso ao site, caso o usuário retorne ao site, o cookie se renovará e seu prazo de vida se estenderá para mais 3 dias e assim ocorrerá toda vez que o usuário retornar ao site.

Mais detalhes sobre Cookies

Vejamos mais alguns detalhes importantes sobre os cookies.

– Um domínio não pode gerar cookies para outros domínios. Se isso fosse possível, haveria uma insegurança total e um prato cheio para hackers. Note que no cookie, além dos dados de informações, é salvo também a data que ele expirará e o domínio que ele diz respeito.
– Os cookies não são compartilhados entre os navegadores web. Por exemplo, se você acessou um site que gerou um cookie e você estava utilizando o navegador web Firefox, caso você retorne ao mesmo site com outro navegador como o Chrome, o cookie não existirá. Em suma, cookies geradores pelo Firefox são estarão disponíveis para os sites quando você visitá-los usando o Firefox, o mesmo é válido para qualquer navegador web do mercado.
– Os cookies podem ser habilitados ou desabilitados na maioria dos browsers, contudo, é altamente recomendável deixar os cookies habilitados, visto que boa parte dos sites da internet necessitam de cookies para manter uma comunicação saudável com você.
– Um mesmo site pode possuir vários cookies.

Como Trabalhar com Cookies no PHP

Antes de seguir, tenha em mente que este é um exemplo simples e prático de como trabalhar com Cookie no PHP. Talvez futuramente eu venha a criar um artigo mais elaborado com mais detalhes e mais exemplos. Dito isto, vamos lá:

Para você criar um cookie via PHP, utilize a função setcookie(). Os principais parâmetros desta função são os três primeiros: nome, valor, data de expiração. Onde:
Nome: Nome do Cookie
Data de Expiração: O tempo para o cookie expirar. Esse valor é uma timestamp Unix, portanto é o número de segundos desde a época (epoch). Se não entendeu, não tem problema, o que você precisa saber é que você deve usar a função times() + multiplicação de dois sessentas assim: time()+60*60. Agora o próximo número da multiplicação serão as horas, o próximo serão dos dias e o próximo os meses. Assim temos o seguinte:

a) time()+60*60*2 : O Cookie expirará em duas horas
b) time()+60*60*24*30 : O Cookie expirará em 30 dias
c) time()+60*60*24*30*6 : O Cookie expirará em 6 meses

Criando Cookie no PHP

Veja o Código PHP abaixo:

1
2
3
<?php
setcookie("afiliado","77",time()+60*60*24*30*6);
?>
<?php
setcookie("afiliado","77",time()+60*60*24*30*6);
?>

Colocando isso no topo de alguma página PHP você irá gravar um cookie chamado afiliado com valor 77 e com data de expiração de 6 meses de 30 dias exatos. Aqui no meu texte a data de expiração ficou pra dia 22 de setembro e a data do texte foi dia 26 de setembro. Isso se dá porque, como já dito, o script entende que são 6 meses de 30 dias exatos, o que não ocorre em nosso calendário. Para contornar isso, use a função mktime() do php. Veja o exemplo abaixo, comento depois:

1
2
3
4
5
6
7
8
9
$ano = date("Y");
$mes = date("m");
$dia = date("d");
 
$hora = date("H");
$minuto = date("i");
$segundo = date("s");
 
setcookie("afiliado","77",mktime($hora, $minuto, $segundo, $mes+6, $dia, $ano));
$ano = date("Y");
$mes = date("m");
$dia = date("d");

$hora = date("H");
$minuto = date("i");
$segundo = date("s");

setcookie("afiliado","77",mktime($hora, $minuto, $segundo, $mes+6, $dia, $ano));

No código PHP acima fiz o seguinte:
a) Peguei: ano, mes, dia, hora, minuto e segundo da data atual e coloquei isto em variáveis separadas.
b) agora, na função setcookie usei mktime e no campo mês acrescentei o valor 6, ou seja, o mês atual mais 6 meses.

Fazendo assim o script configurou a data correta de expiração, até os segundos. Rs. Note que você pode incrementar qualquer um dos valores, por exemplo, para que o cookie fique vivo apenas durante 2 horas, acrescente +2 do lado da variável $hora e retire o +6 do lado da variável $mes. Entendeu? Ótimo!.

Lendo Cookie no PHP

Agora que já criamos nosso cookie no PHP, vamos criar o código PHP que faz a leitura do tal Cookie. Sem delongas, vamos lá:

1
2
3
4
5
6
7
8
9
<?php
 
if(isset($_COOKIE["afiliado"])){
 
    echo $_COOKIE["afiliado"];
    
}
 
?>
<?php

if(isset($_COOKIE["afiliado"])){

	echo $_COOKIE["afiliado"];
	
}

?>

O PHP Possui uma variavel global $_COOKIE que é usada para recuperar valores de cookies. Então, da mesma forma que você usa: $_POST, $_GET, etc… também pode usar $_COOKIE para ler cookies disponíveis para a página. Fiz exatamente isso, verifiquei com isset que havia algum cookie chamado “afiliado” e caso ele existisse mandei imprimir o valor. O retorno deste script foi o valor 77, ou seja, o código do afiliado. Simples, não?

Excluindo Cookie no PHP

Com base no nosso exemplo, você pode excluir o cookie Afiliado simplesmente informando uma data passada para ele no campo expires. Veja como ficaria:

1
2
3
4
<?php
 
setcookie("afiliado","77",mktime($hora, $minuto, $segundo, $mes, $dia, $ano-1));
?>
<?php

setcookie("afiliado","77",mktime($hora, $minuto, $segundo, $mes, $dia, $ano-1));
?>

Neste exemplo, decrementei o ano colocando -1 ao lado da variável ano.

Conclusão

Cookies são essenciais nos programas de afilidos e trabalhar com eles no PHP é muito simples. Só um detalhe que você não pode esquecer-se é que quando for salvar cookies no computador de algum visitante de teu site, deve fazer isso antes de imprimir qualquer tipo de dado no navegador web. Isso se faz necessário pois os cookies possuem/são informações de cabeçalho e caso você imprima algo na tela, não poderá modificar mais o cabeçalho da requisição.

Para finalizar, cuidado com os valores que você vai colocar em cookies, saiba que este valor ficará visível nos computadores dos usuários. Por exemplo, se guardar a senha de um dado usuário no cookie, guarde-a encriptada com alguma função de criptografia como a MD5 do PHP.

Até o próximo artigo aqui no blog!

Como Criar, Ler e Excluir Cookies com PHP
5 (100%) 9 votes

Leave a Reply