Sistema de Login com PHP/MySQL (Quadodo)

Existem muitos tutoriais bem interessantes e muito instrutivos sobre como montar um sistema de login para sites, utilizando PHP e MySQL, porém muitos desses sistemas não são muito seguros. Para aumentar a segurança, dá um pouco mais de trabalho. Assim, experimentei um sistema pronto de login, o Quadodo (para o Google, “Você quis dizer: quadrado” hehe).

Quadodo - interface para o login, alteração de senha e formulário de registro com imagem de segurança (o visual foi alterado com CSS)
Quadodo – interface para o usuário de login, alteração de senha e formulário de registro com imagem de segurança (o visual foi alterado com CSS)

O Quadodo é um sistema de login “free open-source” escrito em PHP e SQL. Trabalha através de cookies e sessions, com as informações guardadas em um banco de dados (MySQL ou PostgreSQL). Permite personalização para diferentes idiomas, grupos de permissões, diferentes formas de ativar o login, etc. Possui um painel de controle e permite a utilização de imagem de segurança para o registro do usuário.

Criei um pequeno tutorial de instalação do sistema, baseando-me no guia de utilização do usuário e nas minhas tentativas e erros (versão utilizada: 3.1.9).

  1. Baixar sistema do site: http://www.quadodo.net/downloads.php
  2. Transferir o arquivo baixado para diretório de destino, descompactar (unzip qls-3.1.9.zip) e renomear diretório para qls (fica mais apresentável)
  3. Construir uma página com links para fazer o cadastro (qls/register.php) e login (qls/login.php)
  4. Acessar o arquivo qls/install/install.php pelo navegador
  5. Configurações (algumas coisas dá pra mudar depois entrando na página qls/admincp.php na aba Main e no item Configuration):
    – SQL Setup: preencher a porta, nome do servidor (localhost ou IP, caso a database esteja em outra máquina), senha e nome da base de dados no MySQL;
    – Cookie Information: deixar como está (pode setar o tempo, em segundos, para duração/length da cookie), somente preencher cookie domain com o endereço do site (http://www.example.com/ você deve por .example.com);
    – Security Information: pode deixar como está (nem rela);
    – User Settings: personalize o que quiser, preencha o Login Redirect URL (redirecionamento de página quando dá o login, é interessante deixar a qls/members.php como teste) e Logout Redirect URL;
    – Admin User Information: preencha conforme o seu coração mandar;
  6. Acessar o mysql e criar uma database com o mesmo nome da que você especificou nas configurações
  7. Clicar em “Install”; se tudo der certo, vai aparecer para você salvar um arquivo chamado database_info.php, copiá-lo na pasta qls/includes
  8. Ao tentar acessar o Painel de Administrador (admincp.php), aparecerá uma mensagem dizendo para remover a pasta install (do it!)
  9. Acesse a tela de login usando qls/login.php e preencha os dados de administrador para ter acesso ao Painel de Administrador
  10. Talvez na aba configurations do Painel de Controle esteja “Allow Registrations?” Marcada como “no”. Se estiver assim, o usuário só poderá se registrar se tiver um convite feito pelo administrador (convite esse enviado através do painel de controle, aba invitations), e caso o usuário tente se cadastrar vai aparecer o erro “That is not a valid invitation code.” Assim, deixe como “yes” para permitir o cadastro direto. Caso queira restringir um pouco mais, pode utilizar a opção “Activation Type” como “Admin validation”, o que faz com que o cadastro somente seja aprovado se o administrador o fizer através do painel de controle (abda “users” -> Pending Accounts) ou pelo próprio usuário, marcando “User validation”
  11. Faça um teste criando um usuário, alterando sua senha… para isso, entre em qls/register.php ou utilize o link que você criou no passo 3
  12. Todas as páginas a terem acesso restrito devem conter o seguinte cabeçalho:

Lembrando de fechar a chave no final do documento:

Caso o MySQL esteja em um servidor remoto, os arquivos “qls/DBconn.php” e “qls/includes/database_info.php” devem conter o IP ou hostname do PC em que está rodando o serviço MySQL, assim como usuário e senha do mesmo.

Dá para personalizar o sistema, como incluir novos campos de cadastro ou também traduzir as instruções para outro idioma. Comecei a passar para o português, mas somente fiz da parte de interação com o usuário (as áreas internas do administrador deixei no original), quem quiser pode pegar o arquivo “Portuguesse.lang.php” no meu GitHub/quadodo_ex.

Atualização: Caso queira um cadastro mais completo, você pode editar diretamente os arquivos (a começar pelo html/register_form.php) ou criar uma outra página onde são apresentados os dados de cadastro para o usuário, inclusive com a opção dele mesmo atualizar as informações. Creio que é uma opção mais fácil e interessante, pode baixar o arquivo “area_usuario.php” como exemplo também no GitHub/quadodo_ex. Ele inclui uma máscara em jQuery para CEP, CPF, etc.

Alguma dúvida? Correção? Utilizou o sistema? Legal, compartilhe conosco através do espaço para comentários!