Curso de PHP: Armazenando informações no cookie
Uma prática comum nas aplicações via internet é o armazenamento de informações em cookie, que são arquivos que ficam armazenados no computador do usuário.
Como o cookie fica armazenado no computador do usuário, nós não podemos confiar totalmente nas informações armazenadas nele. O post segue ensinando como criar, ler e apagar um cookie.
Criando um cookie
Para criar um cookie usamos a função setcookie(). Os dados do cookie fazem parte do header de uma página. Para você entender, quando o usuário faz uma requisição, a página vem dividida em duas partes, o header, que contém as informações sobre a requisição (se está OK, a data de modificação, se tem que redirecionar, os cookies, etc) e o content, que é onde é a saída HTML do processamento.
Geralmente, quando não há um gerenciamento de buffer no servidor (controle que armazena a saída antes de mandar o resultado) é comum ocorrer erros de header. Os mais comuns ocorrem quando tentamos utilizar um recurso que faz uso de headers da página (como cookies, sessões, ou redirecionamento de página, etc) depois de ter enviado qualquer conteúdo HTML. Isso é um problema, porquê tudo que vai no header, tem que ser passado antes de qualquer conteúdo.
Por esse motivo, temos que tomar cuidado para usar o setcookie antes de qualquer saída HTML. E uma saída HTML pode ser uma tag, ou um simples espaço que está no começo do arquivo antes da abertura da tag <?php.
Já que estamos precavidos, vamos fazer uma página que grava o nome da pessoa em um cookie? Vamos criar um formulário:
<html>
<head>
<title>Teste</title>
</head>
<body>
<p>Testando o cookie</p>
<form action="" method="post">
<label for="txtNome">Nome</label>
<input type="text" name="txtNome" />
<input type="submit" value="Enviar" />
</form>
<a href="lecookie.php">Ler o Cookie</a>
<a href="apagacookie.php">Apagando o Cookie</a>
</body>
</html>Um formulário normal que envia o nome digitado para a mesma página. Ok?
Vamos incluir a lógica de criar o cookie. Insira o código abaixo antes de qualquer coisa no código anterior:
<?php
if (isset($_POST['txtNome'])) {
setcookie('meucookie', $_POST['txtNome'], time() + 3600);
}
?>A função setcookie aceita diversos parâmetros. Os mais importantes são os três primeiros que são:
- o nome do cookie (meucookie)
- o valor do cookie ($_POST['txtNome'])
- tempo de expiração do cookie (time() + 3600 é um cálculo que retorna o tempo no timestamp unix, que é a quantidade de segundos que passou desde o dia 01/01/1970)
O tempo de expiração determina para o browser até quando ele deve usar aquele cookie. Como o cálculo é em segundos, utilizei a função time para retornar a hora em segundos neste momento, e adicionei 3600 segundos, o que quer dizer que o cookie vai ser válido por mais uma hora.
Existem outros parâmetros, relacionados á segurança do cookie. Leia mais aqui: http://br.php.net/manual/pt_BR/function.setcookie.php
Lendo um cookie
Para ler um cookie é muito simples. Todos os cookies enviados para a página estarão disponíveis na variável $_COOKIE. Mas um cookie só estará disponível na próxima vez que você acessar uma página. Por isso, vamos criar uma página chamada lecookie.php:
<html>
<head>
<title>Teste</title>
</head>
<body>
<p>Lendo o cookie</p>
<?php
if (isset($_COOKIE['meucookie'])) {
echo 'Cookie lido: ' . $_COOKIE['meucookie'];
} else {
echo 'Cookie não existe';
}
?>
<a href="lecookie.php">Ler o Cookie</a>
<a href="apagacookie.php">Apagando o Cookie</a>
</html>
</body>Simples.
Apagando o cookie
Para apagar um cookie também utilizamos a função setcookie, porém temos que passar uma string vazia '' ou false, e no tempo de expiração temos que passar uma hora atrasada. Veja:
<?php
setcookie('meucookie', '', time() - 3600);
?>
<html>
<head>
<title>Teste</title>
</head>
<body>
<p>Apagando o cookie</p>
<a href="lecookie.php">Ler o Cookie</a>
</body>
</html>Salve o arquivo acima como apagacookie.php.
Bom, agora é só acessar o primeiro arquivo, que cria o cookie, e ir acessando os outros para testar seu funcionamento.
- Login to post comments




