Aula 22: Protegendo Páginas e Funcionalidades com Autenticação Baseada em Sessões

Por: Nerd Toolkit Postado em: Outubro 21, 2024 Visto por: 383

1. O que São Sessões no PHP?

As sessões no PHP são uma maneira de armazenar informações dos usuários entre requisições. Diferente dos cookies, as sessões armazenam os dados no servidor, tornando-as mais seguras para manter dados sensíveis, como informações de login.


2. Iniciando uma Sessão

Para utilizar sessões em PHP, a função session_start() deve ser chamada no início de qualquer script que precise acessar ou manipular dados de sessão.

Exemplo básico de como iniciar uma sessão:

<?php
session_start();
?>

3. Protegendo Páginas com Sessões

Para proteger uma página, verificamos se o usuário está autenticado ao checar se uma variável de sessão, como $_SESSION['user_id'], está definida. Se o usuário não estiver logado, ele é redirecionado para a página de login.

Adicione o seguinte código no topo de todas as páginas que precisam ser protegidas:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
   header("Location: login.php");
   exit;
}
?>

Este código:

  • Verifica se a sessão contém o ID do usuário.
  • Se não estiver logado, redireciona para a página de login.

4. Exemplo: Protegendo a Página de Tarefas

No arquivo tasks.php, que lista as tarefas do usuário, adicione o código de verificação de sessão para garantir que apenas usuários logados possam acessar essa página:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
   header("Location: login.php");
   exit;
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
   <title>Tarefas - Gerenciador de Tarefas</title>
   <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
   <div class="container">
       <h2 class="mt-5">Minhas Tarefas</h2>
       <!-- Conteúdo da página de tarefas -->
   </div>
</body>
</html>

5. Protegendo Funcionalidades com Sessões

Além de proteger páginas inteiras, também podemos proteger funcionalidades específicas que dependem da autenticação. Por exemplo, se quisermos proteger o acesso à funcionalidade de criar uma tarefa, verificamos a sessão antes de executar a ação.

No arquivo create_task.php, que processa a criação de novas tarefas, podemos adicionar a seguinte verificação:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
   header("Location: login.php");
   exit;
}
// Código para adicionar uma nova tarefa
?>

6. Encerrando Sessões: Logout

Para permitir que o usuário faça logout e encerre sua sessão, o script logout.php deve limpar e destruir todos os dados de sessão:

<?php
session_start();
session_unset(); // Remove todas as variáveis de sessão
session_destroy(); // Destroi a sessão
header("Location: login.php"); // Redireciona para a página de login
exit;
?>

7. Manutenção de Sessões e Segurança

  • Tempo de Sessão: Considere adicionar um tempo limite para a sessão, encerrando-a após um período de inatividade.
  • Regeneração de ID de Sessão: Para evitar ataques de fixação de sessão, você pode regenerar o ID da sessão após o login bem-sucedido com session_regenerate_id().

8. Exercício Prático

Como exercício, proteja as páginas do seu projeto:

  • Aplique a lógica de sessão nas páginas e funcionalidades sensíveis.
  • Implemente o logout e teste o funcionamento.

9. Próximos Passos

Agora que você sabe como proteger páginas e funcionalidades com sessões, o próximo passo será melhorar a segurança do sistema, implementando criptografia de senhas e prevenindo vulnerabilidades comuns.

Tags:
#autenticação PHP  # proteção de páginas PHP  # sessões PHP  # autenticação por sessão  # login com sessão PHP  # segurança de sessões PHP  # OOP PHP 

Notícias Relacionadas

Aula 22: Protegendo Páginas e Funcionalidades com Autenticação Baseada em Sessões
  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