Refatoração completa de uma aplicação PHP para implementação de arquitetura MVC, autenticação segura e gestão de níveis de acesso.
Este é um projeto acadêmico desenvolvido para a disciplina de Aplicações Web.
O desafio consistiu em assumir um código base (fornecido pelo Prof. Milton Júnior) que continha bugs e vulnerabilidades, e realizar uma refatoração completa.
O objetivo principal não foi apenas "fazer funcionar", mas sim reestruturar a aplicação seguindo boas práticas de Arquitetura de Software (MVC) e implementar um sistema robusto de Segurança da Informação, garantindo que dados sensíveis e áreas restritas estivessem devidamente protegidos.
- Arquitetura MVC: Separação clara de responsabilidades (Model, View, Controller), facilitando a manutenção.
- Segurança de Senhas: Implementação de Hashing moderno (
password_hashepassword_verify), eliminando o armazenamento de senhas em texto puro. - Controle de Sessão: Sistema de login seguro com validação de credenciais e proteção contra Session Hijacking.
- Níveis de Acesso (ACL):
- Cliente/Fornecedor: Acesso restrito aos seus próprios dados.
- Administrador: Visão gerencial completa com permissões elevadas.
- Painel Administrativo:
- Listagem unificada de usuários (uso de
LEFT JOINSQL). - CRUD completo (Criação, Leitura, Edição e Exclusão).
- Gestão dinâmica de permissões.
- Listagem unificada de usuários (uso de
- Rotas Protegidas: Middleware que intercepta requisições e bloqueia acesso não autorizado via URL.
![]() |
![]() |
|---|---|
| Autenticação Segura | Gestão de Usuários (Admin) |
- Linguagem: PHP 8+ (Orientado a Objetos)
- Banco de Dados: MySQL
- Frontend: HTML5, CSS3, Bootstrap 5
- Servidor Web: Apache (via XAMPP)
- Design Pattern: MVC (Model-View-Controller) e DAO (Data Access Object)
- Servidor local (XAMPP, WAMP ou Laragon).
- PHP 8.0 ou superior.
- MySQL.
-
Clone o repositório:
git clone https://github.com/MateusLima909/mvc-php-basico.git
Ou extraia o ZIP na pasta
htdocsdo seu servidor. -
Configure o Banco de Dados:
- Acesse o phpMyAdmin (geralmente
http://localhost/phpmyadmin). - Crie um banco chamado
mvc_php_basico. - Importe o arquivo
dump.sql(localizado na raiz do projeto).
- Acesse o phpMyAdmin (geralmente
-
Configure a Aplicação:
- Abra o arquivo
App/App.php. - Verifique as credenciais do banco:
define('DB_HOST', "localhost"); define('DB_USER', "root"); define('DB_PASSWORD', ""); // Senha do seu MySQL (geralmente vazio no XAMPP) define('DB_NAME', "mvc_php_basico");
- Abra o arquivo
-
Execute:
- Acesse
http://localhost/mvc-php-basico/no navegador.
- Acesse
Nota para Teste (Admin): Para acessar as funções administrativas, cadastre um usuário comum e, via banco de dados, altere a coluna
nivel_acessoparaadmin.
Este projeto foi fundamental para transformar teoria em prática. Um agradecimento especial ao Professor Milton Júnior (GitHub) por fornecer o código base e o desafio. A tarefa de refatorar um código existente foi uma das experiências mais enriquecedoras do curso, ensinando na prática como lidar com dívida técnica e segurança.
Refatorado e desenvolvido por Mateus Lima.

