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!