Home > Diversos > PHP x Cookies

PHP x Cookies

Cookies nem sempre são recomendados, principalmente porque por serem armazenados no navegador do cliente, o usuário pode desabilitar o cookie ou até mesmo pior, alterar o valor do mesmo. Como o cookie pode ser confiável desse jeito?

Bom, mas tem aplicações em que é inevitável a utilização de cookies. Eu, por exemplo, estou desenvolvendo um sistema onde resumidamente, preciso pegar informações do banco de dados e passar para uma variável javascript, de forma que pelo código fonte não seja possível ver o valor desta informação.

Qual a solução? COOKIES!! Guardo o cookie com o valor confidencial por PHP, direto do banco de dados, e pelo javascript pego o valor do cookie e armazeno numa variável, de forma que ninguém que não acesse meu banco de dados saiba o valor da variável (muito diferente de utilizar os famosos campos “hidden”).

Em teste, tudo certo… e eis que ao passar para produção, claro, tinha que não funcionar direito… alias essa é uma premissa básica do desenvolvimento de sistemas: não importa o quanto você testa seu programa, ao passar para produção sempre terá um erro desconhecido no qual você perde horas, ou até mesmo dias, estragando de vez seu cronograma de entrega do sistema. (essa é aliás uma das maiores emoções de ser programadora =] )

Após muito mexer e debugar manualmente meu programa (”debugar” em php já viu, é um ctrl+c / ctrl+v / echo aqui / echo acolá que não acaba mais), descobri minha salvação! Por algum motivo não identificável (na verdade o que importa mesmo nestes casos é a solução do problema), muito provavelmente diferença de configuração do php, a função setcookie(…) do php só estava funcionando quando setada antes da TAG <HTML>… todos os cookies que eram criados após esta tag, em produção não eram criados.

Neste caso, a solução foi colocar logo no início da página, o comando “ob_start();” que ativa o output buffering, evitando o erro (que para mim era invisível) “Warning: Cannot modify header information”.

Então é isso, para quem for trabalhar com php + cookies, fica aí a dica!


<?php
session_start();
ob_start(); // linha milagrosa!
?>
<HTML>
<?
// agora posso criar meus cookies mesmo após a tag HTML
setcookie("cookieDaMelissa", "1000", 0, false);
$nome_do_cookie = "cookieDaMelissa";
if(isset($_COOKIE[$nome_do_cookie]))
{
echo "O cookie $nome_do_cookie existe! ";
}
?>
<HEAD>
....

Diversos

  1. No comments yet.
  1. No trackbacks yet.