Sistema de login – Parte 1 – PHP OOP

Hoje vamos começar um tutorial “Sistema de login – PHP OOP”. Ele será divido em 3 partes. Nele vamos aprender a fazer um sistema de login, usando classes no PHP… Meu objetivo aqui é que você aprenda duas coisas: como fazer um sistema de login desde o começo e aprenda um pouco mais sobre o uso de classes. Segue link para aprofundamento caso seja necessário <http://php.net/manual/pt_BR/book.classobj.php>

O sistema de login usará banco de dados MySQL e terá suporte a encriptação de senha (MD5, SHA1 e etc)… Totalmente customizável e será fácil alterá-lo caso você precise de alguma coisa especial. Também teremos um suporte a opção “lembrar minha senha”, onde o usuário permanecerá logado caso volte no site algum tempo depois, outra funcionalidade customizável e opcional.

Outro detalhe importante sobre o sistema é que ele irá funcionar nas versões 4 e 5 do PHP e do MySQL, então, se a sua hospedagem é uma vergonha, não se preocupe! 😀

Para sua melhor identificação, tudo que for código estará em negrito itálico.

A Tabela de Usuários
Se você já tem uma tabela de usuários pode pular essa parte… Se não, vamos criar a seguinte tabela no banco de dados do seu site:

Tabela de Usuários
Para criar essa tabela, você poderá usar o seguinte código SQL:
CREATE TABLE `usuarios` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`nome` VARCHAR(150) NOT NULL ,
`usuario` VARCHAR(100) NOT NULL ,
`senha` VARCHAR(40) NOT NULL ,
PRIMARY KEY (`id`) )
ENGINE = MyISAM;

A classe Usuario
Antes de tudo, precisamos criar o nosso arquivo, vamos seguir algumas boas práticas de programação atribuindo nome que identificam seu código “usuario.class.php”. Criado o arquivo vazio, vamos começar a construir nossa classe:
class Usuario {
}

Agora, inserir algumas propriedades (variáveis) que serão usadas pela classe ao longo do projeto…
*/
var $campos = array(
‘usuario’ => ‘usuario’,
‘senha’ => ‘senha’
);

São com essas propriedades da classe que você vai poder customizar a classe para ela funcionar no seu site. Cada uma esta devidamente comentada e explicada, é só alterar da forma que você necessitar.

O primeiro método da nossa classe:
/**
* Usa algum tipo de encriptação para codificar uma senha
*
* Método protegido: Só pode ser acessado por dentro da classe
*
* @param string $senha – A senha que será codificada
* @return string – A senha já codificada
*/
function __codificaSenha($senha) {
// Altere aqui caso você use, por exemplo, o MD5:
// return md5($senha);
return $senha;
}

Esse método cuidará da encriptação da senha (caso ela exista, claro)… Se o seu sistema não usar nenhum tipo de criptografia, pode deixar esse método do jeito que está, mas caso você use, por exemplo, o SHA1, você precisa mudar ali na linha 34 e colocar, por exemplo:
return sha1($senha);

Caso você use outro tipo de encriptação, você vai precisar modificar esse método… O importante é você receber a senha pura/plana como parâmetro ($senha) e retornar a senha encriptada.

Agora vamos criar o segundo método da classe e o último método dessa parte do tutorial:
// Procura por usuários com o mesmo usuário e senha
$sql = “SELECT COUNT(*)
FROM `{$this->bancoDeDados}`.`{$this->tabelaUsuarios}`
WHERE
`{$this->campos[‘usuario’]}` = ‘{$usuario}’
AND
`{$this->campos[‘senha’]}` = ‘{$senha}'”;
$query = mysql_query($sql);
if ($query) {
$total = mysql_result($query, 0);
} else {
// A consulta foi mal sucedida, retorna false
return false;
}
// Se houver apenas um usuário, retorna true
return ($total == 1) ? true : false;
}

Esse método, como o comentário explica, cuidará de validar se um usuário existe, procurando o par $usuario + $senha no banco de dados… Ele só retornará verdadeiro (true) quando apenas um registro for encontrado. Se você reparar logo ali no começo do código, na linha 45, ele usa o método __codificaSenha() que irá encriptar (ou não) a senha… Simples, ok? 🙂

Então é isso gente… Por hoje vamos ficar por aqui. Em breve postarei a Parte 2, onde iremos criar os métodos que deixam um usuário logado (usando sessões E cookies)… E antes que alguém reclame, essa classe ainda não está usável… Ela é apenas a 1ª parte de uma classe que vamos fazendo ao longo dessa sequencia de tutoriais.

Não deixem de dar uma olhada nas outras partes:

Sistema de login – Parte 2 – PHP OOP
Sistema de login – Parte 3 – PHP OOP

Deixe uma resposta