Tutorial sobre Cookies no PHP

Cookies são arquivos de texto armazenados no computador cliente e são mantidos para fins de rastreamento de uso. PHP suporta cookies HTTP de forma transparente.

Existem três etapas envolvidas na identificação de usuários recorrentes:

Este capítulo lhe ensinará como definir cookies, como acessá-los e como excluí-los.

A anatomia de um cookie

Os cookies são geralmente definidos em um cabeçalho HTTP (embora o JavaScript também possa definir um cookie diretamente em um navegador). Um script PHP que define um cookie pode enviar cabeçalhos parecidos com este.

HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT; 
                 path=/; domain=tecforest.com.br
Connection: close
Content-Type: text/html

Como você pode ver, o cabeçalho Set-Cookie contém um par nome-valor, uma data GMT, um caminho e um domínio. O nome e o valor serão codificados por URL. O campo expira é uma instrução para o navegador “esquecer” o cookie após a data e hora fornecidas.

Se o navegador estiver configurado para armazenar cookies, ele manterá essas informações até a data de expiração. Se o usuário apontar o navegador para qualquer página que corresponda ao caminho e domínio do cookie, ele reenviará o cookie ao servidor. Os cabeçalhos do navegador podem ter a seguinte aparência.

GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz

Um script PHP terá então acesso ao cookie nas variáveis ​​ambientais $_COOKIE ou $HTTP_COOKIE_VARS [] que contém todos os nomes e valores de cookies. O cookie acima pode ser acessado usando $HTTP_COOKIE_VARS[“nome”].

Configurando Cookies com PHP

O PHP forneceu a função setcookie() para definir um cookie. Esta função requer até seis argumentos e deve ser chamada antes da tag <html>. Para cada cookie, essa função deve ser chamada separadamente.

setcookie(nome, valor, expira, caminho, domínio, segurança);

Aqui está o detalhe de todos os argumentos –

O exemplo a seguir criará dois cookies com o nome e a idade em que esses cookies expirarão após uma hora.

<?php
   setcookie("nome", "Lucas Keaton", time()+3600, "/","", 0);
   setcookie("idade", "36", time()+3600, "/", "",  0);
?>
<html>
   <head>
      <title>Configurando Cookies com PHP</title>
   </head>
   
   <body>
      <?php echo "Definindo Cookies"; ?>
   </body>
</html>

Acessando Cookies com PHP

O PHP oferece muitas maneiras de acessar cookies. A maneira mais simples é usar as variáveis ​​$_COOKIE ou $HTTP_COOKIE_VARS. O exemplo a seguir acessará todos os cookies definidos no exemplo acima.

<html>
   <head>
      <title>Acessando Cookies com PHP</title>
   </head>
   
   <body>
      
      <?php
         echo $_COOKIE["nome"]."<br />";
         
         /* é equivalente a */
         echo $HTTP_COOKIE_VARS["nome"]."<br />";
         
         echo $_COOKIE["idade"]."<br />";
         
         /* é equivalente a */
         echo $HTTP_COOKIE_VARS["idade"]."<br />";
      ?>
      
   </body>
</html>

Você pode usar a função isset () para verificar se um cookie está definido ou não.

<html>
   <head>
      <title>Acessando Cookies com PHP</title>
   </head>
   
   <body>
      <?php
         if(isset($_COOKIE["nome"])){
            echo "Bem-vindo(a) " . $_COOKIE["nome"] . "<br />";
         }else{
            echo "Desculpe … Não reconhecido" . "<br />";
         }
      ?>
   </body>
</html>

Excluindo Cookie com PHP

Oficialmente, para excluir um cookie, você deve chamar setcookie () apenas com o argumento de nome, mas isso nem sempre funciona bem e não deve ser chamado.

É mais seguro definir o cookie com uma data que já expirou:

<?php
   setcookie("nome", "", time()- 60, "/","", 0);
   setcookie("idade", "", time()- 60, "/","", 0);
?>
<html>
   <head>
      <title>Excluindo Cookies com PHP</title>
   </head>
   
   <body>
      <?php echo "Cookies Excluídos"; ?>
   </body>
</html>

Sair da versão mobile