BRG 2 Denunciar post Postado Dezembro 17, 2009 Estou com problema para recupera os cookies. Para gerar estou usando isso: $dados = array(); $dados["usuario"] = $m_USER; $dados["senha"] = $m_PW; if(isset($_POST["cookie"])){ setcookie("dados", serialize($dados), time()+60*60*24*365); } Para resgatar estou usando isso: unserialize($_COOKIE["dados"]); Mais não está dando certo. Ja tentei unserialize(stripslashes($_COOKIE["dados"]) e tabm não deu. Alguem tem alguma ideia? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 17, 2009 Explica melhor o que nao esta dando certo? tem conteudo no cookie o que mostra? ou o cookie fica vazio? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 17, 2009 Amigo, O que está acontecendo ? Aparece alguma mensagem de erro ? Os dados não estão vindo como deveriam ? Tente gravar com base64_encode: $dados = array(); $dados["usuario"] = $m_USER; $dados["senha"] = $m_PW; if(isset($_POST["cookie"])){ setcookie("dados", base64_encode( serialize($dados) ), time()+60*60*24*365); } E resgatar com base64_decode: unserialize(base64_decode( $_COOKIE["dados"]) ); Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Explica melhor o que nao esta dando certo? tem conteudo no cookie o que mostra? ou o cookie fica vazio? O cookie fica vazio! Amigo, O que está acontecendo ? Aparece alguma mensagem de erro ? Os dados não estão vindo como deveriam ? Tente gravar com base64_encode: $dados = array(); $dados["usuario"] = $m_USER; $dados["senha"] = $m_PW; if(isset($_POST["cookie"])){ setcookie("dados", base64_encode( serialize($dados) ), time()+60*60*24*365); } E resgatar com base64_decode: unserialize(base64_decode( $_COOKIE["dados"]) ); Tentei e não funcionou. Estou usando em uma INTRANET (Sistema interno). Ai logo via LDAP, se o usuario e a senha for verdadeira ele redireciona para uma pagina fora EXTRANET. Tentei colocar assim: Página intranet: $dados = array(); $dados["usuario"] = $m_USER; $dados["senha"] = $m_PW; if(isset($_POST["cookie"])){ setcookie("dados", base64_encode( serialize($dados) ), time()+60*60*24*365); } Ai na pagina Extranet $dados = unserialize(base64_decode($_COOKIE["dados"]) ); echo $dados["usuario"]; Não retorna nada Quando coloco print_r($_COOKIE); imprime Array ( [__utma] => 265197582.1610061312.1260448395.1260452459.1260538916.3 [__utmz] => 265197582.1260448395.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) ) Alguma ideia? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 17, 2009 testa $dados antes de criar o cookie e você esta testando se $_POST["cookie"] existe dai entao cria o cookie? se $_POST["cookie"] nao existir então ele nao cria nada error_reporting(E_ALL); ini_set('display_errors', TRUE); $dados = array(); $dados["usuario"] = $m_USER; $dados["senha"] = $m_PW; //print_r($dados); //if(isset($_POST["cookie"])){ setcookie("dados", serialize($dados), time()+60*60*24*365); //} testa o print_r primeiro e veja se $dados tem conteudo depois comenta o print_r e testa pra ver se ficou tudo certo Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 17, 2009 O cookie fica vazio! imprime Array ( [__utma] => 265197582.1610061312.1260448395.1260452459.1260538916.3 [__utmz] => 265197582.1260448395.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) ) Humm, seu cookie não foi gravado. Coloque o seguinte logo no início do seu código: error_reporting( E_ALL | E_STRICT ); Acho que você está tentando enviar o cookie depois de já ter iniciado a saída com PHP, o cookie é um cabeçalho HTTP e DEVE ser enviado antes de qualquer outra coisa. Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Fabio, testei.. e apareceu isso Array ( [usuario] => teste [senha] => teste) Notice: unserialize() [function.unserialize]: Error at offset 0 of 33 bytes in D:\intranet\index.php on line 81 O codigo ficou assim; $dados = array(); $dados["usuario"] = $m_USER; $dados["senha"] = $m_PW; setcookie("dados", serialize($dados), time()+60*60*24*365); $dados = unserialize($_COOKIE["dados"]); echo $dados["usuario"]; ============== Olha! Agora assim.. quando eu jogo tudo na mesma pagina da certo. Quando eu uso um header e tento pegar na Extranet (Página Externa) não rola.. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Dezembro 17, 2009 Agora assim.. quando eu jogo tudo na mesma pagina da certo. Quando eu uso um header e tento pegar na Extranet (Página Externa) não rola.. Resolvido então ? Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Não... porque assim, Eu tenho que logar na página interna e mandar para página externa. Quando eu mando para pagina interna e recupero na mesma página da certo.(COMO TESTE) Agora quando eu logo na pagina interna e mando para a página externa (header("Location: http://....")), não aprece nada e o cookei fica daquele jeito: Array ( [__utma] => 265197582.1610061312.1260448395.1260452459.1260538916.3 [__utmz] => 265197582.1260448395.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) ) Ta complicado...rs Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 17, 2009 Os domínios são iguais ou diferentes? Um cookie só estará disponível para o mesmo domínio, a não ser que você modifique o domínio dele na hora de criar o cookie. http://br.php.net/manual/pt_BR/function.setcookie.php Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Dominios diferentes. Mudificar o cookie?? setcookie ("CookieTeste", "", time() - 3600, "http://www.meusite.com", 1); Isso?? E na hora de pegar? Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 17, 2009 Você precisa utilizar ele nos dois domínios ou vai criar em um e utilizar só no outro? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Nos dois dominios... Tem como me dar um help pra gerar isso?? Tentei fazer assim setcookie("dados", serialize($dados), time()+60*60*24*365, "http://extranet.meusite.com.br", 1); E depois pegar e ainda não rolou.. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 17, 2009 Você está setando errado o cookie. Veja bool setcookie ( string $nome [, string $valor [, int $expira [, string $caminho [, string $domínio [, bool $seguro [, bool $somente http ]]]]]] ) Logo após o tempo de expiração, vai o caminho e só depois vai o domínio. Todos os argumentos, excento o name , são opcionais. Você pode também colocar como argumento uma string vazia ("") para pular o argumento. Por que o argumento expire é um inteiro, ele não pode ser escapado com uma string vazia, por isso utilize um zero (0) no lugar. caminho O caminho no servidor aonde o cookie estará disponível. Se configurado para '/', o cookie estará dosponível para todo o domínio. 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 domínio . O valor padrão é o diretório atual aonde o cookie está sendo configurado. domínio O domínio para qual o domínio estará disponível. Para fazer com que ele esteja disponível para todos os subdomínios de example.com então você deve configurar ele para '.example.com'. O . não é obrigatório mas faz com que seja compatível com mais navegadores. Configurando ele para www.example.com ele fará com que o cookie esteja disponível somente para o subdomínio www. Veja a especificação de 'tail matching' em » spec para maiores detalhes. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Cara seria isso? setcookie("CookieTeste", $value, time()+3600, "/blog/", ".dominio.com", 1); Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Dezembro 17, 2009 Não sei como você precisa, mas fazendo assim: - Só estará disponível da pasta blog para frente - Só estará disponível no domínio dominio.com.br e seus subdomínios É assim que você precisa? Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
BRG 2 Denunciar post Postado Dezembro 17, 2009 Exato... Mais não funcionou.... Nossa.. ja tentei de tudo..rs Compartilhar este post Link para o post Compartilhar em outros sites