Nenhum produto encontrado nessa seleção.
O PHP suporta cookies HTTP, que são uma forma de salvar dados no navegador do cliente para acesso posterior. Tais dados podem (ou não) ter uma data para a expiração. Neste caso, o cookie estará acessível 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 para consulta. O cookie será automaticamente apagado quando a data determinada expirar.
Em PHP, você pode criar cookies com a função setcookie() ou setrawcookie(). Como eles são uma parte do cabeçalho HTTP, a função setcookie() precisa ser chamada antes que você exiba qualquer coisa no navegador do cliente (no início do seu código).
Quando você cria um cookie em PHP, ele automaticamente estará disponível na variável global $_COOKIE em forma de array, ou seja, se você criar um cookie chamado "login", terá acesso ao mesmo pela variável $_COOKIE[‘login’].
Vamos ver como criar, apagar e acessar os dados de cookies em PHP.
$_COOKIES em PHP
Vamos utilizar a função setcookie para criar cookies em PHP, veja como:
<?php setcookie ( $nome, $valor, $expira, $caminho, $dominio, $seguranca, $somentehttp); ?>
setcookie suporta milhares de parâmetros, mas apenas o nome do cookie é obrigatório. No entanto, se você utilizar a função setcookie apenas com o nome do cookie desejado, você estará, na verdade, removendo o valor do cookie com aquele nome.
Criando um $_COOKIE
Para criar um cookie que expira assim que o navegador do usuário for fechado, apenas indique o nome e o valor:
<?php // Cria o cookie meu_cookie setcookie('meu_cookie', 'valor do cookie'); // Mostra os dados do cookie echo $_COOKIE['meu_cookie']; ?>
Perceba que, no trecho de código acima, seu cookie só será exibido na segunda vez que o script for executado, já que ele precisa ser criado no primeiro acesso, e no segundo exibido.
Alterando o valor de um $_COOKIE
Para alterar o valor do seu $_COOKIE, basta utilizar novamente a função setcookie com o mesmo nome anterior, depois altere o valor.
<?php // Cria o cookie meu_cookie setcookie('meu_cookie', 'Novo valor do cookie'); // Mostra os dados do cookie echo $_COOKIE['meu_cookie']; ?>
$_COOKIE com data para expiração
Se você quiser criar um cookie com data para expiração, basta utilizar o terceiro parâmetro. Infelizmente este parâmetro não suporta um formato de data conhecido por nós, você vai ter que utilizar a função time() ou mktime() para capturar a data desejada. Isso acontece porque esse valor é uma timestamp Unix (número de segundos desde a era Unix).
Veja um exemplo:
<?php // 30 Dias = Data atual + 60 minutos * 60 segundos * 24 horas * 30 dias $expira = time() + ( 60 * 60 * 24 * 30 ); // Cria o cookie meu_cookie setcookie('meu_cookie', 'Novo valor do cookie', $expira); // Mostra os dados do cookie echo $_COOKIE['meu_cookie']; ?>
Nome que estou utilizando a função time() para 30 dias, ou seja, agora o $_COOKIE[‘meu_cookie’] estará disponível por 30 dias no computador do cliente. Terminada essa data, ele será apagado automaticamente.
Dica: Se você quiser saber o valor da variável $expira, basta utilizar a função date (que vamos falar em outras aulas). Exemplo:
<?php // 30 Dias = Data atual + 60 minutos * 60 segundos * 24 horas * 30 dias $expira = time() + ( 60 * 60 * 24 * 30 ); // Cria o cookie meu_cookie setcookie('meu_cookie', 'Novo valor do cookie', $expira); // Mostra a data formatada echo date('d/m/Y H:i:s', $expira); ?>
Apagando um $_COOKIE
Para apagar um $_COOKIE, basta adicionar uma data no passado, por exemplo:
<?php // Apaga o cookie meu_cookie setcookie('meu_cookie', '', time()-3600); ?>
Outros parâmetros para $_COOKIE
Como você pôde perceber, falamos apenas sobre os parâmetros principais da função setcookie, porém, pode ser que você precise de $_COOKIEs mais específicos, onde tais parâmetros poderão ajudar.
Veja abaixo uma descrição detalhada sobre eles:
$caminho
O caminho no servidor onde o cookie estará disponível. Se configurado para '/', o cookie estará disponível para todo o $dominio. Se configurado para o diretório '/foo/', o cookie estará disponível apenas dentro do diretório /foo/ e todos os subdiretórios como /foo/bar do $dominio. O valor padrão é o diretório atual onde o cookie está sendo configurado.
$dominio
O domínio para qual o cookie estará disponível. Configurando o domínio para 'www.example.com' fará com que o cookie esteja disponível no subdomínio www e nos subdomínios superiores. Cookies disponíveis para um domínio inferior, como 'example.com' estarão disponíveis para subdomínios superiores, como 'www.example.com'.
$seguranca
Indica que o cookie só poderá ser transmitido sob uma conexão segura HTTPS do cliente. Quando configurado para TRUE, o cookie será enviado somente se uma conexão segura existir. No lado do servidor, fica por conta do programador enviar esse tipo de cookie somente sob uma conexão segura (ex respeitando $_SERVER[“HTTPS”]).
$somentehttp
Quando for TRUE o cookie será acessível somente sob o protocolo HTTP. Isso significa que o cookie não será acessível por linguagens de script, como JavaScript. É dito que essa configuração pode ajudar a reduzir ou identificar roubos de identidade através de ataques do tipo XSS (entretanto ela não é suportada por todos os browsers), mas essa informação é constantemente discutida. Foi adicionada no PHP 5.2.0. TRUE ou FALSE.
Fonte: Os dados acima estão disponíveis no site do PHP.
Mais um exemplo de $_COOKIE e setcookie
Veja um exemplo de utilização de setcookie e $_COOKIE com todos os parâmetros:
<?php // 30 Dias = Data atual + 60 minutos * 60 segundos * 24 horas * 30 dias $expira = time() + ( 60 * 60 * 24 * 30 ); // Cookie expira em 30 dias // Só está disponível no domínio 127.0.0.1 // Só está disponível no subdomínio ./Cursos/php/aula_23/ setcookie ("meu_cookie", "Valor", $expira, "./Cursos/php/aula_23/", "127.0.0.1", false, false); // Mostra o valor do cookie echo $_COOKIE['meu_cookie']; ?>
Concluindo
$_COOKIEs e $_SESSIONs (que vamos ver posteriormente) são muito utilizados para sistemas de login, além disso, são excelentes para passar dados de uma página para outra sem ter que criar variáveis adicionais para isso.
Recomendo que você faça testes em seu computador, tente criar, alterar e apagar os $_COOKIEs criados, isso será de grande utilidade para você prosseguir em nosso curso.
Em caso de dúvidas, não deixe de comentar.