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í.
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



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
Bem colocado brother. consertado!
Valeu pelo comentário e pela leitura.
Parabens cara, ótimo tutorial!
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.
Me desculpem, é por que eu criei DEFAULT_LINK, voces podem subistituir por site_url() e dar load no helper URL
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?
Coloca uma barra no final ou tira o index.php.. tudo isso depende da configuração.
=)
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.