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)
12
respostas

Protegendo rotas com autorização

index.php

<?php if($this->session->flashdata("success"))  : ?>
    <p class="alert alert-success"><?= $this->session->flashdata("success") ?></p>
<?php endif?>

<?php if($this->session->flashdata("danger"))  : ?>
    <p class="alert alert-danger"><?= $this->session->flashdata("danger") ?></p>
<?php endif?>

auth_helper.php

function autoriza() {
    $ci = get_instance();
    $usuarioLogado = $ci->session->userdata("usuario_logado");
    if(!$usuarioLogado) {
        $ci->session->set_flashdata("danger", "Você precisa estar logado");
        redirect("/");
    }
    return $usuarioLogado;
}

Minha autenticação funciona perfeitamente redirecionando para a tela inicial porém a mensagem não aparece. Não faço ideia do que possa está acontecendo.

12 respostas

Bom dia Luiz, ao invés de redirecionar, fique na mesma página e verifique se o código está funcionando (Comente a linha do redirect). Depois teste com o redirect para uma URI um pouco diferente. Dessa maneira você conseguirá isolar o possível erro. Não estou vendo erro aqui neste código, mas fazendo esses testes deve isolá-lo

Att

Olá Guilherme,

tentei isolar de todas as formas possíveis HAHAHAHAHA. Nada de mensagem :/

Posso sugerir usar {} ao invés de if : endif?

Abraço

Claro, toda sugestão é válida hahahaha. Já darei uma resposta.

Nada feito! Não funciona mesmo :/

Deve ser algo muito simples que estmaos deixando passar ao procurar algo complexo. Sem nenhum if para esses dois casos, tenta fazer:

    p1: <p class="alert alert-danger"><?= $this->session->flashdata("danger") ?></p>
    p2: <p class="alert alert-danger"><?= $this->session ?></p>

Veja o html que saiu? Cola ele aqui? Cola o html que saiu dos ifs também, vamos ver se esses ps estão saindo...

HTML gerado ao logar com usuário ou senha inválidos, utilizando o if

<html lang="en">

    <head></head>
    <body>
        <div class="container">
            <h1></h1>
            <table class="table"></table>
            <h1></h1>
            <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/login/autenticar"></form>
            <h1></h1>
            <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/usuarios/novo"></form>
        </div>
    </body>

</html>

HTML gerado com o código acima sem if

Ao atualizar a página:



    <html lang="en">
        <head></head>
        <body>
            <div class="container">



                         p1: 

                <p class="alert alert-danger"></p>


                    p2: 

                <p class="alert alert-danger"></p>
                <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"></div>
                <p></p>
                <h1></h1>
                <table class="table"></table>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/login/autenticar"></form>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/usuarios/novo"></form>
            </div>
        </body>
    </html>

Após efetuar login com usuário ou senhas inválidas.



    <html lang="en">
        <head></head>
        <body>
            <div class="container">



                         p1: 

                <p class="alert alert-danger"></p>


                    p2: 

                <p class="alert alert-danger"></p>
                <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"></div>
                <p>
                </p>
                <h1></h1>
                <table class="table"></table>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/login/autenticar"></form>
                <h1></h1>
                <form accept-charset="utf-8" method="post" action="http://localhost/mercado/index.php/usuarios/novo"></form>
            </div>
        </body>
    </html>

Mesmo com os

s sendo mostrados sem if, a mensagem se "usuário ou senha inválidos" não aparece. Será que o problema não está a nível de session? Abraço.

Que pena que a discussão parou por aí.

Pois, meses depois, estou com o mesmo problema.

Resolveram ?.

Se puderem, me avisem, ok?

Bom dia Sidnei,

Poderia me passar um link para o zip com seu projeto para ver o que pode estar acontecendo de errado?

Att

Bom dia, Victor. Legal ter alguém como você por aqui, sempre disposto a ajudar (tenho visto sua participação nas discussões.

Felizmente, não vai ser preciso, pois eu resolvi o problema. Vou postar abaixo como fiz.

solução!

Consegui resolver, simples, mas inimaginável para mim!

Eu estranhei que quando eu tinha o código dentro do controller (produto/Formulario), funcionava corretamente. Quando eu usava a função do auth_helper não funcionava.

O que eu tinha de diferente neles?

o charset!!!!!!

Troquei o charset para utf-8 e , pronto, tá beleza.

Luiz e Guilherme, se puderem testar no caso que estavam discutindo, por favor testem.

Bom no meu caso deu certo.

Obrigado Victor por querer se envolver neste problema :)

Oi Sidnei, tudo bem?

Desculpe, estava testando com o usuário do Victor (também aqui do Alura) uma tela e acabei me mantendo logado no usuário dele quando enviei a resposta ontem :) Já troquei a autoria da mensagem de volta.

Ótima solução. Vou conferir e colocar na documentação do exercício também em breve.

Abraço