Jump to content


Photo

Problema Com Cookies


  • Faça o login para participar
2 replies to this topic

#1 Eduardo F.

Eduardo F.

    Turista

  • Usuários
  • 40 posts
  • Sexo:Não informado

Posted 07/09/2009, 13:42

Boa tarde pessoal, estou desenvolvendo uma enquete para um site e quero que cada usuário vote apenas uma vez, para isso eu defino um cookie com um valor de término absurdo, usei time()+60*60*24*9999.
Blz, mas o problema é, a enquete está na página inicial do site e quando clico em votar eu uso AJAX para chamar um outro arquivo PHP e assim fazer a contagem dos votos, a definição do cookie e recebo de volta o total de votos até o momento. Certo, até aí tudo bem, o firefox me mostra o cookie definido com a validade até 2037 certinho, mas na hora em que eu uso $_COOKIE['enquete'] na página principal depois de dar um reload nela, o PHP da página principal não encontra o cookie definido.

Gostaria de pedir algum tipo de luz a vcs, porque eu não sei mais o que fazer =(

Aguardo respostas.

Ed

Pessoal, só dando um UP aqui, acabei de fazer um scriptzinho vazio somente com echo $_COOKIE['enquete'] e ele me retornou o valor do cookie, pelo jeito tem alguma coisa na minha página principal que ta bloqueando o acesso ao cookie, se alguém tiver alguma idéia, por favor, compartilhe =/

Edição feita por: Eduardo F., 07/09/2009, 13:50.


#2 MarcoviZ

MarcoviZ

    ubuntu for human being

  • Usuários
  • 1137 posts
  • Sexo:Não informado

Posted 07/09/2009, 19:30

Poste o seu código para podermos ajudar,

uma obs. se o cara limpar os cookies ele vai conseguir fazer varios votos, você pode criar um campo com o IP da pessoa, e a hora em que votou, assim você pode fazer com que não se possa votar o mesmo IP ne um período X.


[]'s
[]'s

#3 Eduardo F.

Eduardo F.

    Turista

  • Usuários
  • 40 posts
  • Sexo:Não informado

Posted 07/09/2009, 23:26

Olá segue abaixo os códigos.

Função que recebe e contabiliza o voto. Esta função é chamada pelo arquivo enquete.ajax.php que por sua vez é chamado pelo AJAX quando o botão de votar da enquete é clicado.

[codebox]
function votaEnquete($param) {
require_once('bd.class.php');
$BD = new bd();
if(!isset($_COOKIE['enquete'])) {
setcookie('enquete', 1, time()+60*60*24*9999);
}
$BD->conectaBD(1);
$q = 'SELECT * FROM enquete WHERE atv = \'1\'';
$consulta = $BD->consultaBD($q);
$dados = $BD->fetchBD($consulta);
$voto = $dados['vt'.$param];
$voto++;
$q = 'UPDATE enquete SET vt'.$param.' = \''.$voto.'\' WHERE atv = 1';
$BD->consultaBD($q);
$q = 'SELECT * FROM enquete WHERE atv = \'1\'';
$consulta = $BD->consultaBD($q);
$dados = $BD->fetchBD($consulta);
echo $dados['vt1'].'#'.$dados['vt2'].'#'.$dados['vt3'].'#'.$dados['vt4'].'#'.$dados['vt5'];
}
[/codebox]

Tentei dar um print no cookie na página inicial do meu site, coloquei como sendo a primeira linha e ainda assim não mostra, não sei o que pode estar errado =(

===============================================

Gente, agradeço a todos os que ajudaram, mas, por incrível que pareça, eu consegui achar o problema.
O problema era o seguinte, o cookie era criado por um arquivo PHP que ficava num diretório dentro do diretório raiz, aí por padrão o caminho do cookie era a pasta abaixo da raiz e assim não tinha como o outro PHP acessar porque estava acima do caminho definido. Para contornar o problema eu precisei definir o caminho no campo PATH da função setcookie e aí ele pegou o valor ;D Vivaaa eauhuaehuehuaeu.

Bom espero que isso possa ajudar alguém algum dia hehehe.

Edição feita por: Eduardo F., 07/09/2009, 23:27.





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq