Gerenciando Sessões com $_SESSION em PHP: Como Armazenar e Recuperar Dados

Postado Por:

Categoria:

Postado em:

Gerenciando Sessões com $_SESSION em PHP: Como Armazenar e Recuperar Dados

Introdução

Quando desenvolvemos aplicações web, muitas vezes precisamos manter informações de um usuário ativo durante toda a sua navegação no site, como por exemplo, dados de login, carrinhos de compras, preferências, entre outros. Em PHP, isso pode ser facilmente feito usando sessões, que permitem armazenar dados do usuário entre diferentes requisições HTTP.

A superglobal $_SESSION é o array associativo utilizado em PHP para armazenar essas informações de sessão. Cada usuário terá uma sessão única, identificada por um ID de sessão.

Como Iniciar uma Sessão em PHP

Antes de usar $_SESSION, é necessário iniciar a sessão no início de cada script em que deseja acessar ou manipular as variáveis de sessão. Isso é feito com a função session_start().

.porto-u-1579.porto-u-heading{text-align:left}
<?php
// Inicia a sessão
session_start();
?>

A partir desse ponto, você pode começar a armazenar e recuperar dados da sessão.

Armazenando Dados em $_SESSION

Armazenar dados na sessão é simples. Basta atribuir um valor a um índice do array $_SESSION. Vamos ver um exemplo básico de como armazenar e acessar dados de sessão:

.porto-u-4613.porto-u-heading{text-align:left}
<?php
// Inicia a sessão
session_start();

// Armazena dados na sessão
$_SESSION['username'] = 'joaodasilva';
$_SESSION['email'] = 'joao@example.com';

// Exibe os dados armazenados
echo 'Usuário: ' . $_SESSION['username'] . '<br>';
echo 'Email: ' . $_SESSION['email'];
?>

Nesse exemplo, o nome de usuário e o email são armazenados na sessão e podem ser acessados em qualquer página do site enquanto a sessão estiver ativa.

Removendo Dados de $_SESSION

Você pode remover um item específico da sessão utilizando a função unset(), ou destruir toda a sessão utilizando session_destroy().

.porto-u-9388.porto-u-heading{text-align:left}
<?php
// Inicia a sessão
session_start();

// Remove um item da sessão
unset($_SESSION['username']);

// Destroi toda a sessão
session_destroy();
?>

Após a chamada de session_destroy(), todas as variáveis da sessão serão removidas e o usuário perderá todos os dados armazenados na sessão.

Exemplo Completo: Gerenciando Login de Usuário com Sessão

Vamos agora criar um exemplo mais completo em que gerenciamos o login de um usuário usando $_SESSION.

login.php

.porto-u-4703.porto-u-heading{text-align:left}
<?php
session_start();

// Simulação de autenticação bem-sucedida
if ($_SERVER['REQUEST_METHOD'] == 'POST' && $_POST['username'] == 'admin' && $_POST['password'] == '12345') {
    $_SESSION['loggedin'] = true;
    $_SESSION['username'] = 'admin';
    header('Location: dashboard.php');
    exit;
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <h2>Login</h2>
    <form method="POST" action="login.php">
        <label for="username">Usuário:</label>
        <input type="text" name="username" id="username" required>
        <br>
        <label for="password">Senha:</label>
        <input type="password" name="password" id="password" required>
        <br>
        <button type="submit">Entrar</button>
    </form>
</body>
</html>

dashboard.php

.porto-u-2629.porto-u-heading{text-align:left}
<?php
session_start();

if (!isset($_SESSION['loggedin']) || $_SESSION['loggedin'] !== true) {
    header('Location: login.php');
    exit;
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Painel de Controle</title>
</head>
<body>
    <h2>Bem-vindo, <?php echo $_SESSION['username']; ?>!</h2>
    <p><a href="logout.php">Sair</a></p>
</body>
</html>

logout.php

.porto-u-6315.porto-u-heading{text-align:left}
<?php
session_start();
session_destroy();
header('Location: login.php');
exit;
?>

Conclusão

Sessões são uma ferramenta poderosa em PHP para manter informações persistentes sobre o usuário ao longo de suas interações com a aplicação. Com $_SESSION, é possível armazenar dados de forma segura e acessá-los em diferentes páginas, proporcionando uma experiência de usuário mais rica e personalizada.

Para mais detalhes sobre sessões em PHP, consulte a documentação oficial do PHP.

Referências

 

.porto-u-4477.porto-u-heading{text-align:left}

Deixe seu comentário

Posts RELACIONADOS