Aula 5: Desenvolvimento do Sistema de Login e Autenticação

Por: Nerd Toolkit Postado em: Abril 11, 2025 Visto por: 576

Nesta aula, você aprenderá a desenvolver o sistema de login e autenticação, fundamental para controlar o acesso dos usuários ao seu sistema. Utilizaremos PHP orientado a objetos e Bootstrap para criar uma interface moderna e segura, além de implementar a verificação de credenciais usando sessões.


1. Introdução

O login é a porta de entrada para qualquer sistema com área restrita. Nesta aula, abordaremos:

  • Interface de Login: Criação de um formulário com Bootstrap para coleta de e-mail e senha.

  • Autenticação Backend: Validação dos dados do formulário, verificação das credenciais e uso de sessões para manter o usuário autenticado.

  • Segurança: Utilização de métodos seguros como prepared statements e password_verify para proteger os dados dos usuários.


2. Criação da Interface de Login com Bootstrap

Crie o arquivo login.php na pasta /Views. Este arquivo conterá o formulário de login para os usuários.

 
<!-- Views/login.php --> 
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <title>Login de Usuário</title>
  <!-- Link para o Bootstrap -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
</head>
<body>
  <div class="container mt-5">
    <h2 class="mb-4">Login de Usuário</h2>
    <form action="../Controllers/loginController.php" method="post">
      <div class="form-group">
        <label for="email">E-mail</label>
        <input type="email" class="form-control" name="email" id="email" placeholder="Digite seu e-mail" required>
      </div>
      <div class="form-group">
        <label for="senha">Senha</label>
        <input type="password" class="form-control" name="senha" id="senha" placeholder="Digite sua senha" required>
      </div>
      <button type="submit" class="btn btn-primary">Entrar</button>
    </form>
  </div>
</body>
</html>

Dicas para SEO:

  • Utilize títulos e labels claros para facilitar a indexação.

  • Atributos placeholder ajudam na usabilidade e dão contexto aos buscadores.


3. Implementação do Backend de Autenticação

Para processar os dados enviados pelo formulário de login, crie o arquivo loginController.php na pasta /Controllers.

3.1. Criação do Controlador de Login

 
<?php 
// Controllers/loginController.php 
session_start();
require_once '../Classes/Database.php';
require_once '../Classes/Usuario.php';
// Verifica se o formulário foi enviado via POST 
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = trim($_POST['email']);
    $senha = trim($_POST['senha']);
    // Validação básica
    if (!empty($email) && !empty($senha)) {
        $database = new Database();
        $db = $database->getConnection();
        $usuario = new Usuario($db);
        // Tenta autenticar o usuário
        $dadosUsuario = $usuario->autenticar($email, $senha);
        if ($dadosUsuario) {
            // Autenticação bem-sucedida: inicia a sessão e redireciona
            $_SESSION['usuario_id'] = $dadosUsuario['id'];
            $_SESSION['usuario_nome'] = $dadosUsuario['nome'];
            header("Location: ../Views/dashboard.php"); // Página protegida após login
            exit();
        } else {
            echo "E-mail ou senha incorretos. Tente novamente.";
        }
    } else {
        echo "Preencha todos os campos!";
    }
}
?> 

4. Adicionando o Método de Autenticação na Classe Usuario

Agora, vamos adicionar o método autenticar à classe Usuario para verificar as credenciais do usuário. Abra o arquivo /Classes/Usuario.php e inclua o seguinte método, dentro da classe existente, mas não apague nenhum código existente, apenas inclua a função autenticar.

 
  
    // Códigos já implementado na Aula 4
    
    // Método para autenticar o usuário
    public function autenticar($email, $senha) {
        // Prepara a query para buscar o usuário pelo e-mail
        $query = "SELECT id, nome, senha FROM " . $this->table_name . " WHERE email = :email LIMIT 1";
        $stmt = $this->conn->prepare($query);
        $stmt->bindParam(':email', $email);
        $stmt->execute();
        // Se encontrar o usuário, verifica a senha
        if ($stmt->rowCount() == 1) {
            $usuario = $stmt->fetch(PDO::FETCH_ASSOC);
            if (password_verify($senha, $usuario['senha'])) {
                // Retorna os dados do usuário (exceto a senha)
                return [
                    'id'   => $usuario['id'],
                    'nome' => $usuario['nome']
                ];
            }
        }
        return false;
    }

Aspectos Importantes:

  • Validação dos Dados: Verifique se os campos estão preenchidos antes de prosseguir.

  • Segurança:

    • O uso de prepared statements previne SQL Injection.

    • A função password_verify compara a senha informada com o hash armazenado.

  • Sessões: Ao autenticar com sucesso, iniciamos uma sessão para manter o usuário logado.


5. Testando o Sistema de Login

Para testar o sistema de login, siga os passos abaixo:

  1. Acesse a Interface: Abra o navegador e vá até a página de login (ex.: http://localhost/seu_projeto/Views/login.php).

  2. Realize o Login: Insira um e-mail e senha previamente cadastrados.

  3. Verifique a Autenticação: Se as credenciais estiverem corretas, o usuário será redirecionado para uma página protegida (por exemplo, dashboard.php). Caso contrário, uma mensagem de erro será exibida.

Nota: Crie uma página dashboard.php em /Views para testar o redirecionamento e proteger o conteúdo apenas para usuários autenticados.


 

6. Conclusão

Nesta aula, você aprendeu como desenvolver o sistema de login e autenticação utilizando PHP orientado a objetos e Bootstrap. Implementamos a interface de login, criamos o controlador para processar os dados e adicionamos o método de autenticação na classe Usuario para validar as credenciais dos usuários. Essas práticas garantem que apenas usuários autenticados tenham acesso às áreas restritas do seu sistema.

Nos próximos passos, você poderá explorar a integração completa do sistema e adicionar funcionalidades extras, como o tratamento de erros e a manutenção de sessões.

Boa codificação e até a próxima aula!

Tags:
#login PHP  # autenticação PHP  # sistema de login  # PHP OOP  # Bootstrap  # login seguro  # sessões PHP  # tutorial PHP  # SEO 

Notícias Relacionadas

Aula 5: Desenvolvimento do Sistema de Login e Autenticação
  Contato
  • support@nerdtoolkit.com.br
Mapa do Site
Mostrar mapa do site
  Sobre

Feito de programadores para programadores.

Este site utiliza cookies. Ao continuar a utilizar este site, você concorda com a nossa utilização de cookies e política de privacidade.
Leia mais Concordo