Crie um sistema de login completo em PHP + MySQL + Bootstrap 5 totalmente responsivo e bem lapidado. Ele deve conter:
────────────────────────
1. TELA DE LOGIN
────────────────────────
Um formulário com:
- Campo único: “E-mail ou Usuário”
- Botão “Continuar”
Ao enviar:
- O sistema deve procurar na tabela paineis_usuarios se existe o registro.
- Se NÃO existir o e-mail ou usuário → ir para a TELA DE CADASTRO.
- Se existir → ir para a TELA DE SENHA.
Layout:
- Tela centralizada verticalmente
- Card Bootstrap 5
- Ícone de usuário no topo
- Responsivo em celular
- Visual limpo e moderno
────────────────────────
2. TELA DE CADASTRO
────────────────────────
Formulário Bootstrap 5 com os campos da tabela paineis_usuarios:
- email
- usuario
- tipo (select: ‘pf’, ‘pj’)
- senha
- nome (ou razão social)
- apelido / nome fantasia
- cpf ou cnpj (campo dinâmico PF/PJ)
Validações:
- E-mail válido
- Força de senha
- Usuário único
- CPF/CNPJ válidos
Ao cadastrar:
- Salvar no banco com status “pendente”.
- Enviar e-mail automático com um LINK DE CONFIRMAÇÃO.
- Após clicar no link → status muda para “ativo”.
- Exibir mensagem de sucesso: “Conta confirmada com sucesso.”
────────────────────────
3. TELA DE SENHA
────────────────────────
Se o usuário/e-mail existir:
Exibir card pedindo senha:
- Campo SENHA
- Botão ENTRAR
- Link “Recuperar senha”
Validação:
- Se a senha estiver correta:
- Criar sessão
- Redirecionar para a página de origem (usar $_SERVER['HTTP_REFERER'])
- Se senha incorreta:
- Exibir alerta: “Senha inválida”
- Mostrar botão “Recuperar senha”
────────────────────────
4. RECUPERAÇÃO DE SENHA
────────────────────────
- Tela para digitar e-mail ou usuário
- Envia link de redefinição
- Tela de nova senha
- Atualiza no banco
- Confirma com mensagem: “Senha redefinida com sucesso.”
────────────────────────
5. TABELA paineis_usuarios (Criar SQL)
────────────────────────
id INT AUTO_INCREMENT PK
email VARCHAR(255)
usuario VARCHAR(100)
tipo ENUM('pf', 'pj')
senha VARCHAR(255)
nome_razao_social VARCHAR(255)
apelido_fantasia VARCHAR(255)
cpf_cnpj VARCHAR(30)
status ENUM('pendente','ativo')
dataCadastro DATETIME
────────────────────────
6. FRONT-END (Bootstrap 5)
────────────────────────
Use:
- Container-fluid
- Row + col-md-6 + col-lg-4 centralizado
- Cards com sombras leves
- Inputs com form-floating
- Botões: btn-primary w-100
- Alertas Bootstrap
- Layout bonito, harmonioso, intuitivo
────────────────────────
7. PADRÕES MVC
────────────────────────
Criar:
- LoginController
- UsuarioModel
- Views organizadas em /views/login/
- Funções:
• verificarEmailOuUsuario()
• validarSenha()
• cadastrarUsuario()
• enviarConfirmacao()
• confirmarEmail()
• recuperarSenha()
• redefinirSenha()
────────────────────────
Entregar:
- HTML completo das telas
- PHP funcional
- SQL da tabela
- Lógica completa do fluxo
- Tudo responsivo e bem estruturado
- Visual moderno (Bootstrap 5)
Nilton Romani