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:
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