leitura de
Encontrou um problema no conteúdo? Por favor, deixe seu comentário!

Olha eu aqui novamente minha gente! :)

Hoje vamos dar continuidade a nossa sequëncia de tutoriais que te ensina a criar um sistema de logins usando classes no PHP.

Na parte de hoje, a Parte 4, vamos fazer inúmeros ajustes e correções na classe além implementar a funcionalidade “Lembrar minha senha”.

Lembrando a minha senha

A funcionalidade “Lembrar minha senha” funciona basicamente da seguinte forma: após o usuário se logar (informando que quer que sua senha seja lembrada) são criados cookies na máquina dele salvando o usuário e a senha do mesmo… Depois, quando o usuário voltar no site e não estiver logado o sistema busca esses cookies e tenta validar os dados, se os dados validarem ele é logado automaticamente no sistema e os cookies são reescritos (para durarem mais tempo).

Ajustes e correções

Estou desde ontem revisando a classe e fazendo algumas pequenas correções… Não vou listar todas aqui pois acho mais fácil vocês pegarem o PHPs final e darem uma olhada… Prefiro listar aqui rapidamente o que foi preciso fazer e vocês vão dando uma olhada no código:

  • Aumentar as informações nos blocos de comentário (seguindo o padrão do [PHPDoc](http://www.phpdoc.org/));
  • Remover o prefixo "__" dos métodos protegidos (agora todos os métodos são públicos);
  • Documentar em qual versão a propriedade ou método apareceu na classe;
  • Ajustar os métodos usuarioLogado() e logaUsuario() para atender ao sistema de "Lembrar minha senha";
  • Criar a propriedade filtraDados que permite o uso do [mysql_real_escape_string()](http://br.php.net/manual/en/function.mysql-real-escape-string.php) e evita SQL Injection;
  • Criar a propriedade caseSensitive que diferencia "casa" de "CaSa" ou "CASA".
  • Criar a propriedade cookiePath que será usada sempre que um cookie for criado ou deletado.

Novas Propriedades

Para a nossa nova funcionalidade precisamos criar uma nova propriedade na nossa classe:

Se vocês lerem o comentário vão perceber que um terceiro parâmetro foi adicionado ao método logaUsuario()… É esse terceiro parâmetro que define se os dados serão lembrados pelo o sistema.

Novo Método - lembrarDados()

Vamos criar agora o método lembrarDados() que irá salvar os dados do usuário, criptografados, em cookies:

Primeiro nós vamos calcular o UNIX Timestamp que será a data exata de quando os cookies irão expirar:

Agora nós iremos encriptar os dados do usuário usando base64 e adicionar um caractere no início da string criptografada para impedir que ela seja decriptografada pelo usuário (caso ele encontre o valor do cookie):

Agora é só criar os dois cookies e o método está pronto:

Nosso método que salva os dados em cookies está pronto… Esse método será usado pelo método logaUsuario() após todos os dados serem salvos na sessão.

Agora nós vamos precisar criar um método que verifica os dados (usuario e senha) salvos nos cookies:

Novo Método - verificaDadosLembrados()

Esse método é muito importante pois ele verificará os dados salvos nos cookies tentando logar o usuário! Esse método só será chamado quando o usuário tentar acessar uma página protegida e não estiver logado… O proprio método usuarioLogado() já fará isso!

Vamos começar:

Primeiro nós precisamos verificar se os cookies existem, caso eles não existam os dados não foram encontrados e, obviamente, são “inválidos”.

O próximo passo é que faz toda a mágica do método: ele remove o caractere adicionado no início da string criptogafada, descriptografa a string e verifica se os dados são válidos tentando logar o usuário:

Se o usuário for logado com sucesso o método logaUsuario() retornará true para o método verificaDadosLembrados(), que por sua vez também retornará true para o método usuarioLogado() e tudo vai funcionar perfeitamente! :)

Antes que você desista do tutorial agora mesmo por que acha que tá muito complicado, isso é o “normal” da Orientação a Objetos e você vai adorar. :)

Nossa nova funcionalidade está quase pronta.. Só falta uma coisinha: um método que limpe os dados lembrados do Cookie para quando o usuário fizer logout… Isso é opcional, vai depender do seu sistema, mas já vamos criar o método e você decide se limpa ou não os dados após o logout (automaticamente, claro).

Novo Método - limpaDadosLembrados()

Para deletar um cookie você deve definir o seu valor como nulo ou falso e definir a sua data de expiração no passado… O método fica asssim:

Nossa nova funcionalidade está devidamente implementada! :)

Pra quem quiser, o download do script completo:

  • Parte 1 » [Pastie](http://pastie.org/826194)
  • Parte 2 » [Pastie](http://pastie.org/826197) (Inclui a parte 1)
  • Parte 3 » [Pastie](http://pastie.org/826200) (Inclui as partes 1 e 2)
  • Parte 4 » [Pastie](http://pastie.org/826208) (Inclui as partes 1, 2 e 3)

Como usar a nova funcionalidade

Agora vamos fazer alguns mínimos ajustes aos códigos mostados no <a href=”/sistema-de-logins-com-classe-no-php-como-usar” title=”Sistema de logins com classe no PHP â

Thiago Belem / Blog

Thiago Belem


Publicado

Thiago Belem / Blog

Thiago Belem / Blog

Artigos e tutoriais sobre desenvolvimento WEB

Continue lendo