Aula 6: Integração e Tratamento de Erros

Por: Nerd Toolkit Postado em: Abril 25, 2025 Visto por: 382

Nesta aula, vamos integrar as funcionalidades de cadastro e login que desenvolvemos nas aulas anteriores e abordar técnicas para tratar erros e fornecer feedback seguro e amigável ao usuário. A integração garante que o sistema funcione como um todo e o tratamento de erros previne falhas inesperadas, melhorando a experiência do usuário e a segurança da aplicação.


1. Integração dos Sistemas de Cadastro e Login

Após desenvolver os módulos de cadastro e autenticação, é fundamental integrá-los em um fluxo contínuo. A ideia é permitir que o usuário se cadastre, realize o login e tenha acesso a uma área restrita (por exemplo, um dashboard).

Exemplo de Página Protegida: dashboard.php

Crie um arquivo dashboard.php na pasta Views para representar uma área protegida, que somente usuários autenticados poderão acessar.

 
<?php 
// Views/dashboard.php 
session_start();
// Verifica se o usuário está autenticado 
if (!isset($_SESSION['usuario_id'])) {
    header("Location: login.php");
    exit();
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
  <meta charset="UTF-8">
  <title>Dashboard - Área Restrita</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>Bem-vindo, <?php echo htmlspecialchars($_SESSION['usuario_nome']); ?>!</h2>
    <p>Esta é a área restrita do sistema.</p>
    <a href="../Controllers/logoutController.php" class="btn btn-danger">Sair</a>
  </div>
</body>
</html>

Dica: Utilize a função htmlspecialchars() para evitar vulnerabilidades como XSS ao exibir dados do usuário.


2. Tratamento de Erros e Feedback ao Usuário

2.1. Mensagens de Erro e Sucesso

Fornecer feedback claro ao usuário é essencial para melhorar a experiência e auxiliar na resolução de problemas. No exemplo do cadastro e login, já exibimos mensagens simples. Contudo, você pode aprimorar esse sistema utilizando sessões ou variáveis de sessão para armazenar mensagens e exibi-las em uma página de forma consistente.

Exemplo de Uso de Sessão para Mensagens

No controlador de cadastro (cadastroControlle.php), em vez de apenas imprimir mensagens, podemos armazená-las na sessão. Para isso, procure o seguinte código:

if ($usuario->cadastrar($nome, $email, $senha)) {
	echo "Usuário cadastrado com sucesso!";
} 
else 
{
	echo "Erro ao cadastrar usuário. Verifique se o e-mail já está cadastrado.";
}
Troque por esse:
// Substitua os códigos onde o sistema tenta cadastrar os usuários por este
if ($usuario->cadastrar($nome, $email, $senha)) {
    $_SESSION['msg'] = "Usuário cadastrado com sucesso!";
    header("Location: ../Views/login.php");
    exit();
} else {
    $_SESSION['msg'] = "Erro ao cadastrar usuário. Verifique se o e-mail já está cadastrado.";
    header("Location: ../Views/cadastro.php");
    exit();
}

Também é necessário colocar o seguinte código no início da Controller para que ela consiga lidar com a Sessão:

// Esse deve ser o primeiro código do seu arquivo. Coloque ele logo após a abertura da tag do PHP
session_start(); 

 

 

Na página de cadastro (cadastro.php), adicione um trecho para exibir a mensagem:

 
<?php session_start();
if (isset($_SESSION['msg'])) {
    echo '<div class="alert alert-info">' . htmlspecialchars($_SESSION['msg']) . '</div>';
    unset($_SESSION['msg']);
}
?> 

2.2. Uso de Try/Catch para Capturar Exceções

Em operações que envolvem acesso ao banco de dados ou outras operações críticas, utilize blocos try/catch para capturar exceções e registrar os erros. Isso evita que mensagens sensíveis sejam exibidas ao usuário e ajuda na depuração.

Vamos aplicar esse conceito no arquivo Database.php, que está na pasta Classes. Encontre a função getConnection() e substitua pelos códigos a seguir: 

// Exemplo em Database.php 
public function getConnection(){
    $this->conn = null;
    try {
        $this->conn = new PDO(
            "mysql:host={$this->host};dbname={$this->db_name}",
            $this->username,
            $this->password
        );
        $this->conn->exec("set names utf8");
    } catch(PDOException $exception) {
        // Registra o erro em um arquivo de log
        error_log("Erro na conexão: " . $exception->getMessage());
        // Exibe uma mensagem genérica ao usuário
        echo "Não foi possível conectar ao banco de dados.";
    }
    return $this->conn;
}

2.3. Logs de Erros

Para manter a segurança e facilitar a manutenção, registre os erros críticos em um arquivo de log. Você pode configurar o PHP para registrar erros no arquivo error_log do servidor ou em um arquivo específico.

No arquivo php.ini, configure:

 
log_errors = On error_log = /caminho/para/seu/arquivo_de_log.log

Dica: Nunca exiba detalhes dos erros ao usuário final, pois isso pode revelar informações sensíveis sobre o sistema.


3. Integração Completa do Sistema

Com as funcionalidades de cadastro, login e tratamento de erros implementadas, o fluxo do sistema fica da seguinte forma:

  • Cadastro: O usuário preenche o formulário e os dados são validados e inseridos no banco.

  • Login: O usuário autentica com suas credenciais e, se bem-sucedido, é redirecionado para o dashboard.

  • Área Restrita: O dashboard verifica se a sessão está ativa. Caso contrário, redireciona o usuário para a página de login.

  • Feedback: Em todos os pontos, mensagens de erro ou sucesso são exibidas ao usuário, e erros críticos são registrados em logs.


4. Conclusão

Nesta aula, integramos as funcionalidades de cadastro e login, criando um fluxo de usuário contínuo que inclui uma área restrita. Além disso, abordamos técnicas de tratamento de erros, incluindo o uso de mensagens amigáveis, blocos try/catch e a importância dos logs para uma manutenção eficiente do sistema. Essas práticas garantem que o sistema seja robusto, seguro e que ofereça uma experiência de usuário consistente.

Nos próximos passos, você poderá continuar aprimorando o sistema, adicionando novas funcionalidades e aperfeiçoando a segurança e usabilidade do seu projeto.

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

Tags:
#integração PHP  # tratamento de erros  # cadastro e login  # PHP OOP  # Bootstrap  # segurança PHP  # SEO  # desenvolvimento web 

Aula 6: Integração e Tratamento de Erros
  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