Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
11
respostas

Cookie do arquivo login.php não vai para as demais páginas internas

O login é realizado com sucesso, os redirecionamentos funcionam o único problema é que a função setcookie é criada e fica apenas no arquivo login.php, ou seja, eu não consigo trabalhar com o cookie nas páginas internas. O que será que deve estar acontecendo?

11 respostas

Use a função setcookie('Nome do cookie', 'Valor'); para setar um novo cookie e utiliza a função $_COOKIE['Nome do cookie']; para ver o que esta gravado nesse cookie, caso não de certo, poste o código insira seu código aqui para analisarmos, obrigado.

no arquivo login.php

<?php 
include ("conecta.php");
include ("banco-usuario.php");

$usuario = buscaUsuario($conexao, $_POST["email"], $_POST["senha"]);

if($usuario == null) {
    header("Location: ../../index.php?login=0");
}else {
    setcookie("usuario_logado", $usuario["email"]); //(time() + (2 * 3600))
    header("Location: ../../interno/admin.php?login=1");
}
die();

no arquivo admin.php

<?php if(isset($_COOKIE["usuario_logado"])) { ?>
<p class="text-success">Você está logado como echo <?= $_COOKIE["usuario_logado"]; ?>.</p>
<?php } ?>

Ele gera e mostra a variável criada apenas no arquivo login.php mas na página interna admin.php ele não mostra, como se o cookie fosse apagado ou perdido no redirecionamento.

já verificou se o $usuario["email"] esta retornando algum valor?

Apenas via browser, nas ferramentas de desenvolvedor, é que consigo ver o retorno com o email criado. Mas nas páginas ele não mostra.

No else, tire o Header ou apenas comente ele e dê um var_dump($usuario["email"]); e veja o que ele retorna.

Mostra o valor da variável criada:

string 'vandre.paulo@hotmail.com' (length=24)

Na pagina admin.php mude o trecho

echo <?= $_COOKIE["usuario_logado"]; ?>

para:

<?= echo $_COOKIE["usuario_logado"]; ?>

Troquei mas ele dá erro de sintaxe. Troquei por

<?php echo $_COOKIE["usuario_logado"]; ?>

ele aceitou mas continua sem mostrar

Mas ele chega a mostrar a mensagem: "Você está logado como"?

Dando um var_dump nesse cookie na pagina admin.php ele chega a mostrar algo?

Estranho que ele não chega a mostrar nada na tela, nem mesmo a mensagem: "Você está logado como ". O var_dump não exibe nada. Vou refazer todo o processo e criar novas páginas para ver se é algum conflito no meu server local

solução!

Talvez seja o caminho das paginas, tenta deixar tudo no mesmo local, facilita bastante.