Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
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"]) );
>
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?
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
>
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.
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..
>
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 ?
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
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
Dominios diferentes.
Mudificar o cookie??
setcookie ("CookieTeste", "", time() - 3600, "http://www.meusite.com", 1);
Isso??
E na hora de pegar?
Você precisa utilizar ele nos dois domínios ou vai criar em um e utilizar só no outro?
Carlos Eduardo
Nos dois dominios...
Tem como me dar um help pra gerar isso??
Tentei fazer assim
setcookie("dados", serialize($dados), time()+606024*365, "http://extranet.meusite.com.br", 1);
E depois pegar e ainda não rolou..
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
Cara seria isso?
setcookie("CookieTeste", $value, time()+3600, "/blog/", ".dominio.com", 1);
Não sei como você precisa, mas fazendo assim:
É assim que você precisa?
Carlos Eduardo
Exato...
Mais não funcionou....
Nossa.. ja tentei de tudo..rs
Explica melhor o que nao esta dando certo?
tem conteudo no cookie o que mostra? ou o cookie fica vazio?