Como usar sessões para manipular variáveis em PHP

As sessões em PHP são uma das ferramentas mais poderosas para armazenar informações temporárias do usuário e garantir que os dados permaneçam disponíveis entre diferentes páginas de um site. Diferente de cookies, que armazenam dados no navegador do cliente, as sessões armazenam as informações diretamente no servidor, proporcionando maior segurança e controle sobre as variáveis e estados do usuário durante a navegação. Neste post, aprenda como usar sessões para manipular variáveis em PHP.

O que é uma sessão em PHP?

Uma sessão permite que você armazene informações sobre um usuário em variáveis que podem ser acessadas em diferentes páginas durante a mesma sessão de navegação. Quando uma sessão é iniciada, o servidor cria um arquivo onde os dados da sessão serão armazenados, enquanto o navegador do usuário recebe um identificador exclusivo chamado ID de Sessão.

Principais usos das sessões

  • Autenticação: Para verificar se um usuário está logado;

  • Carrinho de compras: Manter itens do carrinho de compras enquanto o usuário navega no site;

  • Preferências do usuário: Armazenar opções como idioma e tema;

  • Mensagens temporárias: Exibir mensagens de sucesso ou erro após a submissão de formulários.

Passo 1: Iniciar uma sessão

Antes de usar qualquer variável de sessão, é necessário iniciar a sessão com a função session_start(). Isso deve ser feito no início de cada página PHP que irá utilizar sessões, antes de qualquer saída (como HTML).

<?php
// Iniciar uma sessão
session_start();
?>

Este comando deve ser colocado logo no início da sua página PHP. O session_start() verifica se uma sessão já existe e a continua, ou cria uma nova se for a primeira visita do usuário.

Passo 2: Criar e manipular variáveis de sessão

Depois de iniciar a sessão, você pode começar a criar e manipular variáveis de sessão utilizando a superglobal $_SESSION.

Criar uma variável de sessão

<?php
// Iniciar a sessão
session_start();

// Armazenar dados em uma variável de sessão
$_SESSION['usuario'] = 'Benedito';
$_SESSION['email'] = 'benedito@exemplo.com';

// Exibir os valores
echo "Usuário: " . $_SESSION['usuario'];
echo "Email: " . $_SESSION['email'];
?>

Aqui, estamos criando duas variáveis de sessão: usuario e email. Essas variáveis estarão disponíveis em qualquer outra página PHP que também use session_start().

Modificar uma variável de sessão

Modificar uma variável de sessão é tão simples quanto atribuir um novo valor a ela:

<?php
// Iniciar a sessão
session_start();

// Modificar o valor de uma variável de sessão
$_SESSION['usuario'] = 'NovoNome';
?>

Excluir uma variável de sessão

Para remover uma variável de sessão específica, você pode usar a função unset():

<?php
// Iniciar a sessão
session_start();

// Excluir uma variável de sessão
unset($_SESSION['email']);
?>

Isso apenas remove a variável email, mantendo a sessão ativa e as outras variáveis intactas.

Encerrar todas as variáveis de sessão

Se você quiser destruir todas as variáveis de sessão de uma vez, pode usar a função session_unset():

<?php
// Iniciar a sessão
session_start();

// Remover todas as variáveis de sessão
session_unset();
?>

Isso não destrói a sessão, apenas remove todas as variáveis associadas a ela.

Passo 3: Encerrar a sessão

Quando você quiser encerrar completamente a sessão do usuário, incluindo todas as variáveis de sessão e o identificador de sessão, utilize session_destroy().

<?php
// Iniciar a sessão
session_start();

// Destruir a sessão
session_destroy();
?>

Isso elimina a sessão atual e remove os dados no servidor, mas não remove as variáveis superglobais $_SESSION imediatamente. Para limpar também os dados locais, você pode combinar session_destroy() com session_unset():

<?php
// Iniciar a sessão
session_start();

// Remover todas as variáveis e destruir a sessão
session_unset();
session_destroy();
?>

Agora, a sessão será completamente removida, e o usuário terá que iniciar uma nova sessão se quiser continuar navegando.

Passo 4: Usar sessões com segurança

Sessões armazenam dados importantes e sensíveis, então é fundamental garantir que o uso delas seja seguro. Aqui estão algumas práticas recomendadas para aumentar a segurança do uso de sessões em PHP:

Regenerar o ID da sessão

Para evitar ataques como Session Hijacking (roubo de sessão), é uma boa prática regenerar o ID da sessão sempre que um usuário fizer login ou realizar ações críticas. Isso pode ser feito com session_regenerate_id():

<?php
// Iniciar a sessão
session_start();

// Regenerar o ID da sessão
session_regenerate_id(true);
?>

Ao regenerar o ID, você impede que usuários mal-intencionados roubem o ID da sessão e o usem para sequestrar a conta do usuário.

Configurar o tempo de expiração da sessão

Para aumentar a segurança, você pode configurar um tempo de expiração para a sessão. Isso evita que a sessão continue ativa por um longo período sem ser usada:

<?php
// Iniciar a sessão
session_start();

// Definir o tempo limite da sessão para 30 minutos
$tempo_maximo = 30 * 60; // 30 minutos em segundos

if (isset($_SESSION['ultima_atividade']) && (time() - $_SESSION['ultima_atividade'] > $tempo_maximo)) {
    // Se o tempo de inatividade for maior que o limite, destruir a sessão
    session_unset();
    session_destroy();
} else {
    // Atualizar o timestamp da última atividade
    $_SESSION['ultima_atividade'] = time();
}
?>

Aqui, verificamos se a última atividade ocorreu há mais de 30 minutos. Se sim, a sessão é encerrada.

Usar session.cookie_secure

Se você estiver usando HTTPS, é uma boa prática configurar a sessão para usar apenas cookies seguros:

ini_set('session.cookie_secure', 1);

Isso garante que os cookies de sessão só sejam transmitidos por conexões seguras (HTTPS).

Exemplo prático: Login com sessão

Um dos exemplos mais comuns do uso de sessões em PHP é para controle de login. Veja um exemplo simples:

Página de login (login.php):

<?php
session_start();

if ($_POST['usuario'] == 'admin' && $_POST['senha'] == '1234') {
    // Usuário autenticado com sucesso
    $_SESSION['usuario_logado'] = $_POST['usuario'];
    header("Location: area_restrita.php");
    exit();
} else {
    echo "Usuário ou senha inválidos.";
}
?>

Página protegida (area_restrita.php):

<?php
session_start();

// Verificar se o usuário está logado
if (!isset($_SESSION['usuario_logado'])) {
    header("Location: login.php");
    exit();
}

echo "Bem-vindo, " . $_SESSION['usuario_logado'];
?>

Página de logout (logout.php):

<?php
session_start();

// Encerrar a sessão e redirecionar para o login
session_unset();
session_destroy();
header("Location: login.php");
?>

Neste exemplo, o usuário é redirecionado para a página de login se tentar acessar a área restrita sem estar logado. Quando o login é realizado com sucesso, uma variável de sessão usuario_logado é criada e usada para permitir o acesso.

As sessões são uma ferramenta essencial para gerenciar dados do usuário durante a navegação em um site.

Elas oferecem uma forma segura e eficiente de armazenar informações temporárias, sendo especialmente úteis para autenticação, carrinhos de compras, e armazenar preferências do usuário. Ao usar sessões, siga as melhores práticas de segurança para proteger os dados dos seus usuários.

QUER APRENDER PHP ORIENTADO A OBJETOS OU APERFEIÇOAR O QUE JÁ SABE?

Então conheça o curso online que já ajudou milhares de pessoas a aprender a programar e desenvolver seus próprios projetos do ZERO e usando orientação a objetos de uma forma fácil de entender.

CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS:

CLIQUE AQUI E SAIBA MAIS

Dúvidas ou sugestões sobre como usar sessões para manipular variáveis em PHP? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Tags:

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *