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: https://sourceforge.net/projects/qls/
  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:
<?php
define('QUADODO_IN_SYSTEM', true);
require_once('qls/includes/header.php');
$qls->Security->check_auth_page('members.php');
if ($qls->user_info['username'] != '') {
?>

Lembrando de fechar a chave no final do documento:

<?php
}
?>

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!

Compartilhe :)

3 comments

    1. Então, dá pra editar o formulário de registro e colocar mais campos, mas tem que acertar várias coisas em alguns arquivos (tipo incluir o campo no arquivo html/register_form.php e depois ir voltando pelos arquivos que eram referenciados e atualizar), então optei por fazer uma área de cadastro do usuário, onde ele mesmo poderia atualizar as informações, a ser preenchida depois do cadastro básico (username, senha e e-mail). Fiz uma atualização com o arquivo pra download dessa área de cadastro do usuário, espero que seja útil. Abraço!

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.