Classe para login de usuário em PHP

[28/04/2011]
Veja um exemplo prático do uso da classe: neste artigo.

Olá pessoal, hoje vou fazer esse artigo a pedido de uma sugestão. Irei apresentar a vocês um classe para fazer autenticação do usuário, verificar se ele está autenticado e encerrar a sessão. Em muitos projetos é preciso fazer uma área restrita que só quem possui um login pode entrar. É ai que entra essa classe.

Clique aqui para fazer download da classe

1. Banco de dados

Primeiramente vamos criar nossa tabela no banco de dados, e inserir alguns usuários:

CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `login` varchar(28) NOT NULL,
  `senha` varchar(50) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;

INSERT INTO `usuarios` (`id`, `login`, `senha`) VALUES (1, 'faael', '1234');
INSERT INTO `usuarios` (`id`, `login`, `senha`) VALUES (2, 'rafael', '4321');

2. Logar

Para realizar o login, precisamos criar um formulário para o usuário colocar seu login e sua senha, porém, nesse artigo vou apenas demonstrar a parte do PHP. Portanto, vamos supor que o login e a senha já tenham vindo de um formulário:

<?php
// Conexão com o banco de dados
mysql_connect("localhost", "usuario", "senha");
mysql_select_db("banco");

// Recuperando os dados do formulário
$LoginUsuario = $_POST["LoginUsuario"];
$SenhaUsuario = $_POST["SenhaUsuario"];

// Incluimos a classe
require_once("login.class.php");

/* 
Instanciamos a classe. A função Login(), aceita como parametros facultativos: 
nome da tabela, nome do campo de login, nome do campo de senha, mensagem de erro.
Por padrão, o nome da tabela é "usuarios", o campo de login é "login", o de senha é "senha"
e a mensagem de erro é "Login ou senha inválido".
*/
$login = new Login();

/* 
Realizamos o login através da função logar() da classe, 
que aceita como parametro obrigatório: o login e a senha. 
E como terceiro parametro: página que o usuário será redirecionado. 
Ou seja: logar(login, senha, redirecionamento)
*/
$logar = $login->logar($LoginUsuario, $SenhaUsuario, "area_restrita.php");

// Se o login ou senha estiver incorreto, exibe mensagem de erro
if ($logar)
	echo $logar;
?>

3. Verificar

Bom agora precisamos verificar se o usuário está logado na página restrita (“area_restrita.php” no nosso caso):

<?php
// Incluimos a classe
require_once("login.class.php");

// Instanciamos a classe
$login = new Login();

/* 
Utilizamos a função verificar() que verifica se o usuário está logado. 
Ela aceita como parâmetro facultativo para onde o usuário será redirecionado
caso ele não esteja logado. No caso, ele não estiver logado, 
será redirecionado para a página de login (login.php).
*/
$login->verificar("login.php");

/*
Se ele estiver logado, mostramos a mensagem de bem-vindo.
A váriavel $LoginUsuario é criada assim que é constado que o
usuário está logado.
*/
echo "Bem vindo " . $LoginUsuario;
?>

4. Logout

E para finalizar a sessão do usuário, fazemos da seguinte maneira:

<?php
// Incluimos a classe
require_once("login.class.php");

// Instanciamos a classe
$login = new Login();

/*
Realizamos o logout através da função logout(), 
que aceita como parâmetro facultativo o local para onde o usuário
será redirecionado.
*/
$login->logout("login.php");
?>

Bom pessoal, apresentei a classe meio que rápido, porém já é possível utilizá-la. Qualquer dúvida em relação a essa classe, entre em contato, ok?

Abraços.