30
Ago
09

Codeigniter – Série de tutoriais – Sistema de Login (Parte 2)

Continuando o sistema de login, agora vamos ao Model da aplicação juntamente ao formulário de login.

Model

No nosso model, teremos as funções de comunicação com o banco de dados, para retornar informações sobre o usuário.

Os métodos utilizados serão:

  • checkLogin()
  • logout()

Bom, sem mais delongas, vamos ao código:

class LoginModel extends Model
{

    private $users_table = 'user';
    private $username;
    private $password;

    function LoginModel()
    {
        parent::Model();
    }

    /**
     * Nesta função, receberemos o login e a senha do usuário para buscar no banco
     * de dados se o usuário é válido. Caso seja, é retornado o Objeto do usuário
     * como visto anteriormente no nosso controller.
     * Se não, é retornado 'false'.
     *
     * Vale ressaltar que estamos utilizando o componente de Active Record do
     * codeigniter, que facilita a manipulação do banco dedados, criando um
     * ambiente de abstração.
     **/
    function checkLogin($username, $password)
    {

        //Variáveis recebidas
        $this->username = $username;
        $this->password = $password;

        //Active Record (Vou separar para melhor entendimento.)
        $this->db->select('id, name, email, status, privileges')
        ->from($this->users_table)
        ->where('email', $this->username)
        ->where('password', md5($this->password));
        /**
         * Esta linha acima poderia ser em uma linha só:
         * $this->db->select('id, name, email, status, privileges')->from($this->users_table)->where('email', $this->username)->where('password', md5($this->password));
         *
         * Ou ainda assim:
         *
         *  $this->db->select('id, name, email, status, privileges');
            $this->db->from($this->users_table);
            $this->db->where('email', $this->username);
            $this->db->where('password', md5($this->password));
         *
         **/

        /**
         * Executamos a query no banco e armazenamos o resultado na variável query.
         * O resultado por default será retornado como objeto.
         **/
        $query = $this->db->get();

        //
        if ($query->num_rows() > 0) {
            return $query->row();
        } else {
            return false;
        }
    }

    /**
     * Por fim, nossa função de logout, para 'desconectar' o usuário da sessão
     *
     **/
    function logout()
    {
        //Atribuimos a variável $user_logged o valor da sessão autenticada
        $user_logged = $this->session->userdata('user_logged');

        //Se não for vazio
        if ($user_logged != '') {

            //Retiramos, ou seja, limpamos a sessão para que o usuário seja desconectado.
            if ($this->session->unset_userdata('user_logged')) {
                return true;
            } else {
                return false;
            }

        } else {
            return false;
        }
    }
}

Bom, este foi o nosso Model.. agora iremos ao nosso formulário de login, nossa VIEW.

VIEW

<div id="login">
<h4>Autenticação no sistema</h4>
<form action="<?=DEFAULT_LINK?>login" name="frm-login" method="post">

 <fieldset>

 <legend>Formulário de Autenticação</legend>

 <label for="frm-login-user">Usuário</label>
 <input type="text" name="login" id="login" />

 <label for="frm-login-pass">Senha</label>
 <input type="password" name="password" id="password" />

 <input type="submit" name="frm-button" value="Autenticar" />

 </fieldset>

 </form></div>

Bom, então finalizamos nosso tutorial de Login. Lógico que dá para incrementar, algo como um “esqueci minha senha”, mas isso fica a cargo de vocês darem uma pensada e fazer por si próprio.

Uma dica é não copiar e sim digitar, pois isso fixa mais na mente, logo o aprendizado é mais rápido.

Abaixo vou deixar a tabela de login para vocês executarem o sisteminha e é isso aí.

SQL da tabela.

O próximo post da série será referente a biblioteca de autenticação que utilizamos aqui. Ela auxilia na recuperação de informações, bloqueio de controllers e algumas coisas mais.

Até a próxima.

That’s All Folks.

Djalma Araújo
www.djalmaaraujo.com.br


8 Respostas para “Codeigniter – Série de tutoriais – Sistema de Login (Parte 2)”


  1. 1 garotosopa
    30, Agosto, 2009 às 5:35 pm

    Tem algo esquisito. O $where que você monta na linha 31 nunca é usado. Acho que ficou sobrando de alguma implementação anterior heheh

    E bem, não conheço o Code Igniter, mas não ficou faltando o controller pra juntar isso tudo?

    Abs, e continue com os 3 posts por semana heheh

    Diogo

  2. 27, Outubro, 2009 às 8:05 pm

    Parabens cara, ótimo tutorial!

  3. 4 Elias Gomes
    24, Novembro, 2009 às 1:18 pm

    Tá dando erro em: <form action="login” name=”frm-login” method=”post”>

    A PHP Error was encountered

    Severity: Notice

    Message: Use of undefined constant DEFAULT_LINK – assumed ‘DEFAULT_LINK’

    Filename: login/login.php

    Line Number: 4
    DEFAULT_LINKlogin” name=”frm-login” method=”post”>

    Valeu.

  4. 6 Elias Gomes
    24, Novembro, 2009 às 2:01 pm

    Apresentou a tela de login blz. Mas, na hora de enviar aparece:
    The requested URL /index.phplogin was not found on this server.

    Pelo que entendi, o botão enviar chama o controller. Mas, parece-me que não esta encontrado.

    Seguinte.
    Meu site_url é http://localhost/index.php
    A estrutura de minha app é:

    explo/
    css
    js
    system/
    application/
    controller
    model
    view/
    login/
    login.php
    proprietario

    Estou tentando implementar o sistema de login a partir de um modelo implementado do tutorial:
    http://imasters.uol.com.br/artigo/14562/cms/criando_uma_aplicacao_com_o_framework_codeigniter/

    Uma verdadeira salada mista. kkk

    Será que tem solução?

    • 24, Novembro, 2009 às 2:08 pm

      Coloca uma barra no final ou tira o index.php.. tudo isso depende da configuração.

      =)

      • 8 Elias Gomes
        25, Novembro, 2009 às 12:40 pm

        Tá funcionando uma maravilha.

        E agora, como validar e paginar meus dados?
        Tentei usar o validation. Parece que não funciona. Tentei usar a class valida que encontrei no wiki, pra validar cpf/cnpj. mas………..

        Valeu. Aguardo respostas.


Deixe uma resposta




Twitter

Assinem meu feed

Assine também via e-mail

del.icio.us

My Flickr

Espaço relax

Coisas.

stuart little.

More Photos

Navegue