Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Problema ao exibir condicionalmente o form de login

O form em produtos/index

Se eu clicar sem preencher nada, aparece autenticado com sucesso, mesmo quando preencho corretamente também aparece mas quando volto e dou F5 o form login continua aparecendo.

Se eu preencher com email ou senha errado aparece falha na autenticação corretamente.

<?php if(!$this->session->userdata("usuario_autenticado")) : ?>

            <div class="row col-xs-12 col-sm-4 col-sm-offset-4">
                <div class="bs-callout bs-callout-primary">
                    <h4>Login</h4>

                    <?php
                    echo form_open("Login/autentica");

                    echo form_label("Email:", "email");
                    echo form_input(array (
                        "name" => "email",
                        "id" => "email",
                        "class" => "form-control",
                        "maxlength" => "255",
                        "placeholder" => "Seu email",
                        "type" => "email"
                    ));

                    echo form_label("Senha:", "senha");
                    echo form_input(array (
                        "name" => "senha",
                        "id" => "senha",
                        "class" => "form-control",
                        "maxlength" => "255",
                        "placeholder" => "Sua senha",
                        "type" => "password"
                    ));

                    echo form_button(array(
                        "class" => "btn btn-primary",
                        "content" => "Entrar",
                        "type" => "submit"
                    ));

                    echo form_close();

                    ?>
                </div>
            </div>
        <?php endif ?>

o controller login

public function autentica() {
        $this->load->model("Usuarios_model");
        $email = $this->input->post("email");
        $senha = md5($this->input->post("senha"));
        $usuario = $this->Usuarios_model->buscaPorEmailESenha($email, $senha);
        if($usuario) {
            $this->session->set_userdata("usuario_autenticado", $usuario);
            $dados = array("mensagem" => "Logado com sucesso");
        } else {
            $dados = array("mensagem" => "Usuário e/ou senha inválidos");
        }

        $this->load->view("login/autentica", $dados);
    }

Usuarios_model

    public function buscaPorEmailESenha($email, $senha) {
            return $this->db->get_where("usuario", array("email" => $email, "senha" => $senha))->row_array();
        }
8 respostas

Outra dúvida, após o submit do button, aparece no início da url http://[::1]/mercado/index.php/Login/autentica

percebi que no request cookies do autentica tem um cookie ci_session porém no response nao tem

Oi bruno, você está fazendo o carregando da biblioteca de sessão?

$this->load->library('session');

Até onde sei, o ::1 é uma outra forma de acessar o localhost, estranho ele ter alterado assim, porém, me diz ai, você teve algum erro quando a url mudou?

Olá Wanderson, valeu pelo retorno...

Estou no autoload

$autoload['libraries'] = array('database', 'session');

Esse buscaPorEmailESenha tá funcionando corretamente? Experimenta colocar na sessão apenas o email do usuário.

O resultado está ok, dei um var_dump no $usuario após a consulta e os dados estavam corretos.

Fiz o que falou mas o resultado foi o mesmo.

A única diferença que percebi que o Codeigniter que estou utilizando é o 3, pode ter relação?

Problema maior que não consigo seguir o curso

Oi Bruno, desculpa a demora, eu andei comparando o seu código com o do projeto original e ele está um pouco diferente. Pode verificar isso?

https://github.com/alura-cursos/codeigniter-php-mvc

Não encontrei problemas obvios nos códigos, mas pode ser um pequeno detalhe. Outra observação é: Apesar de poder não ser isso, você está utilizando uma versão do CI diferente da utilizada no curso, é isso?

solução!

consegui resolver o problema com a ajuda de um colega de trabalho, mostrei o código pra ele e o que faltava era configurar o base_url no config.php $config['base_url'] = 'http://localhost/mercado';