Opa opa opa! Vamos continuar hoje com a terceira parte do nosso tutorial de “Criando um sistema de logins com classe no PHP”…
Já passamos vitoriosos pela Parte 2 e hoje vamos fazer o método que usaremos para verificar se um usuário está logado e o método que usaremos para deslogar o usuário… A boa notícia é que depois da aula de hoje a classe estará pronta para vocês usarem em vossos sites, lembrando sempre que o importante aqui é que vocês aprendam como fazer e não apenas copiem o código e usem.
Vamos começar fazendo uma correção que o Leo Baiano sugeriu no método validaUsuario() criado na Parte 1… A mudança vai acontecer entre a linha 87 e a linha 96:
Mudaremos a consulta e outras três linhas depois:
Essa mudança foi necessária por causa de um probleminha com a função mysql_result() que tem dificuldades de identificar qual resultado nós queremos… Com esse ajuste tudo irá funcionar perfeitamente.
Agora nós iremos começar a criar o método que verifica se há um usuário logado… Ele irá retornar TRUE quando um usuário estiver logado e retornará FALSE em qualquer situação que indique que não há um usuário logado, por isso precisamos verificar todas as possibilidades:
Primeiro nós verificamos a necessidade de iniciar a sessão e lógo após isso iremos verificar se existe o valor “logado” na sessão:
Pra quem não lembra, esse valor $this->prefixoChaves . ‘logado’ foi criado pelo método logaUsuario().
Agora nós precisamos verificar (caso seja necessário) o cookie que contém as informações (usuário, IP e navegador) do usuário para ver se elas batem com o que está armazenado no cookie:
Caso haja o cookie, precisamos criar novamente uma string encriptada contendo as informações do usuário para checar com o valor salvo no cookie:
Feita a verificação do cookie sabemos que, depois disso tudo, o usuário está logado e podemos retornar true e fechar o método..
Terminamos o método que informa se há um usuário logado, agora vamos começar o método que fará o logout do usuário:
O primeiro passo do logout é iniciar a sessão e remover todos os valores da sessão…
Repare que entre a linha 236 e 242 fizemos uma coisa interessante: removemos da sessão apenas os valores que pertencerem ao nosso sistema de login… Muita gente usa um simples session_destroy() para acabar com a sessão, mas se o seu site salvar valores na sessão não podemos simplesmente apagá-los, concorda? :)
Por isso nós fazemos uma verificação a mais, que checa se ainda existem valores na sessão e [caso não exista nada] usamos o session_destroy() e depois removemos o cookie que identifica qual sessão é de qual visitante:
Agora o último passo do logout é remover o cookie que armazena as informações do visitante:
Terminando o método poremos retornar o valor booleano (true ou false) que informa se o usuário foi deslogado com sucesso… Existe forma melhor de fazer isso do que verificando se não há um usuário logado?
E a nossa classe de controle e gerencia de usuários logados está completa! :D
Espero realmente que tenham gostado e aprendido com essa sequencia de tutoriais.
Abraços e até a próxima!