RE: Problema com cookies no Firefox 4.0.1
(20-05-2011 03:42)gelll Escreveu: Código PHP:
<?php $num1 = rand(1, 20); $num2 = rand(1, 4);
$resultado = $num1 + $num2; setcookie("Contactos", $resultado, time()+600, "/");
header("Content-Type: image/png"); $im = @imagecreate(50, 20) or die("Não foi possível criar a imagem."); $background_color = imagecolorallocate($im, 0, 0, 0); $text_color = imagecolorallocate($im, 212, 182, 110); imagestring($im, 3, 5, 5, $num1 . " + " . $num2, $text_color); imagepng($im); imagedestroy($im);
?>
Como pode ver, este é o código completo do ficheiro que faz o random dos 2 números, faz a soma destes, cria o cookie com esse resultado e por fim cria a imagem com o $num1 e $num2 que em cima foram definidos.
Segundo este código não acho que as variáveis possam assumir diversos valores numa execução, pois não existem ciclos nem várias chamadas de variáveis.
Se por acaso achar algum problema neste código ficaria-lhe muito grato, pois eu já o fiz de 1001 formas e o resultado foi sempre igual... O problema é que, como já disse, isto funciona em diversos browser's, e, inclusive no Firefox 4.0.1 também funciona (excepto no meu e no de mais algumas pessoas como eu), o que realmente não acho lógico e ainda me confunde mais a resolução do problema. Eu sei que o PHP nada tem a ver com o browser, mas segundo o que lhe expliquei até aqui, como poderei eu emendar algo que está visivelmente bem?
Testou no seu computador? Obrigado.
Resolvi o teu problema, em vez de criares um cookie com o resultado cria uma sessão, este é o meu exemplo, adapta ao teu:
Código PHP:
session_start(); header("Content-Type: image/png");
$num1=rand(1, 20); $num2=rand(1, 20);
$resultado=$num1+$num2;
$_SESSION["resultado"]=$resultado; // Cria uma sessão com o resultado
$nwImagem=imagecreate(50, 20); $corFundo=imagecolorallocate($nwImagem, 0, 0, 0); // Fundo Preto $corTexto=imagecolorallocate($nwImagem, 255, 255, 255); // Texto em Branco imagestring($nwImagem, 2, 4, 3, $num1." + ".$num2, $corTexto); // Prepara a imagem com as opções imagepng($nwImagem); // Cria a imagem em tipo PNG imagedestroy($nwImagem); // Destrói a imagem
/* Quando já não precisares da sessão, destróis-a assim: unset($_SESSION["resultado"]) */
Testado e comprovado.
|