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

Vamos que vamos! Essa é a segunda parte do nosso tutorial “Criando um sistema de logins com classe no PHP”, na Parte 1 começamos a criar a classe e definimos um método que validava se o usuário existe, agora vamos continuar a classe e criar um método que deixará o usuário logado no sistema usando sessão e cookies.

Primeiro, vamos adicionar algumas novas propriedades que iremos usar nessa parte do tutorial:

Todas as propriedades estão comentadas, é bom vocês irem se acostumando com essa necessidade dos comentários organizados e padronizados, isso vai se tornar um “must have” num futuro não muito distante… Mas isso é assunto pra um outro tutorial.

Reparem que criamos uma propriedade $erro, ela será usada para armazenar as mensagens de erro quando algo der errado… :)

Agora vamos começar a criar o novo, gigantesco e magnífico método que irá salvar o usuário no sistema, mantendo-o logado:

Primeiro de tudo, precisamos validar os dados passados por parâmetro:

Já sabemos se o usuário foi validado, agora nós vamos verificar se é necessário (e possível) iniciar a sessão:

O próximo passo é atrazer (ou não) os dados do banco de dados para a sessão:

Da linha 124 até a linha 135 nó montamos a consulta que será usada para fazer a busca no banco de dados, depois disso nós a executamos e, caso a consulta tenha sido bem sucedida, salvamos os dados na sessão.

Repare que para isso usamos $_SESSION[$this->prefixoChaves . $chave], isso irá criar valores na sessão usando o prefixo (definido na propriedade $this->prefixoChaves no começo da classe) seguido o nome do campo que estava no banco de dados… Então, segundo o nosso exemplo: se estamos pegando o campo id e o campo nome lá da tabela, as chaves criadas na sessão serão usuario_id e usuario_nome… Legal não?

Mas calma que ainda não acabou!

Precisamos ainda definir um valor na sessão e criar (caso seja possível) o cookie que irá ajudar na identificação (e segurança) do usuário:

A parte do cookie pode parecer complexa mais não é… Criamos um cookie chamado “usuario_token” contendo informações adicionais do usuário: usuário, IP e informações do navegador… Essas informações serão usadas para proteger o login do usuário caso outros usuários tentem roubar o ID de sessão ou forjar IDs falsos.

Agora sim o método terminou! :D

Resumindo tudo:

Depois de logado, seguindo o nosso exemplo, serão criados os seguintes valores na sessão:

  • usuario_id » Contendo o ID do usuário (vindo da coluna `id` da tabela);
  • usuario_nome » Contendo o nome do usuário (vindo da coluna `nome` da tabela);
  • usuario_usuario » Contendo o usuario do usuário (?!) (vindo da coluna `usuario` da tabela);
  • usuario_logado (true) » Contendo um booleano (sempre true) informando que o usuário está logado, apenas para facilitar as coisas no futuro.

E será criado um cookie (com as informações do visitante), criptografado, que irá durar apenas enquanto o visitante estiver com o navegador aberto:

  • usuario_token » Exemplo de valor: a9f0a6edefc3d61895d5b8054ed6b8a175bc2851

Por hoje é só pessoal… Na Parte 3 do tutorial iremos criar o método que irá verificar o usuário está logado (que vocês poderão usar nas suas páginas protegidas) e o método para logout, mas isso não é tudo… Ainda vai faltar o “lembrar minha senha” e outras implementações… Talvez um sisteminha de permissões, quem sabe? :D

Pra quem quiser, o download do script completo:

  • Parte 1 » [RAR](/arquivos/2010/01/usuarios.class.parte1.rar)
  • Parte 2 » [RAR](/arquivos/2010/01/usuarios.class.parte2.rar) (Já inclui os códigos da Parte 1)

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

  • [Criando um sistema de logins com classe no PHP - Parte 1](/criando-um-sistema-de-logins-com-classe-no-php-parte-1)
  • [Criando um sistema de logins com classe no PHP - Parte 3](/criando-um-sistema-de-logins-com-classe-no-php-parte-3)

Quem gostou levanta a mão! \o. (E com a outra mão, deixa um comentário agradecendo)

Abraços e até a próxima!

Thiago Belem / Blog

Thiago Belem


Publicado

Thiago Belem / Blog

Thiago Belem / Blog

Artigos e tutoriais sobre desenvolvimento WEB

Continue lendo