Clique aqui e veja todas as aulas
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.
