Sessões em PHP

O que são sessões em PHP?

Uma sessão no PHP, assim como visto no tópico anterior, é uma maneira de armazenar dados temporários enquanto o usuário navega entre as páginas de um site. A sessão é iniciada no servidor e um identificador único é gerado para cada usuário. Este identificador é armazenado no navegador como um cookie por exemplo, permitindo que o PHP associe o usuário a uma sessão específica em futuras requisições.

Como iniciar uma sessão com PHP

Para utilizar sessões em PHP, você deve iniciar a sessão com a função session_start(). Essa função deve ser chamada no início de cada página PHP onde você deseja acessar ou manipular os dados da sessão. Lembre-se de que session_start() deve ser chamada antes de qualquer saída HTML ou echo, caso contrário, ocorrerá um erro.

<?php
session_start();
?>

Armazenando dados na sessão com PHP

Após iniciar a sessão, você pode armazenar dados utilizando a superglobal $_SESSION, que é um array associativo. Isso permite que você guarde qualquer tipo de dado durante a sessão, como informações do usuário, configurações, preferências, entre outros.

Exemplo:

$_SESSION['user_id'] = 123;  // Armazena o ID do usuário
$_SESSION['username'] = 'Joao';  // Armazena o nome de usuário

Esses dados ficam acessíveis em qualquer página onde a sessão esteja iniciada.

Acessando dados da sessão com PHP

Você pode acessar os dados armazenados na sessão utilizando a superglobal $_SESSION. Quando você armazena um valor, basta referenciá-lo pelo nome da chave definida.

Exemplo:

echo 'ID do usuário: ' . $_SESSION['user_id'];
echo 'Nome de usuário: ' . $_SESSION['username'];

Esses valores estarão disponíveis enquanto a sessão estiver ativa.

Modificando dados da sessão com PHP

Os dados armazenados na sessão podem ser modificados a qualquer momento. Basta atribuir um novo valor à chave correspondente na superglobal $_SESSION.

Exemplo:

$_SESSION['username'] = 'Maria';  // Modificando o nome de usuário

Destruindo a sessão com PHP

Quando você não precisa mais dos dados da sessão ou quando o usuário sai da aplicação, você pode destruir a sessão. Isso pode ser feito de duas formas

  • Limpar todos os dados da sessão: A função session_unset() remove todas as variáveis de sessão.
session_unset();  // Limpa todos os dados da sessão

  • Destruir a sessão completamente: A função session_destroy() encerra a sessão e apaga os dados no servidor. No entanto, ela não apaga as variáveis de sessão imediatamente, por isso é comum utilizar session_unset() antes de chamar session_destroy().
session_destroy();  // Destroi a sessão completamente

Gerenciamento de tempo de sessão com PHP

O PHP permite controlar o tempo de vida da sessão, tanto no lado do servidor quanto no lado do usuário.

  • Tempo de expiração da sessão: Para definir o tempo de expiração da sessão, você pode configurar a diretiva session.gc_maxlifetime no arquivo php.in. Essa configuração determina por quanto tempo os dados da sessão podem ficar armazenados no servidor antes de serem considerados expirados.

No PHP, também é possível configurar a expiração por meio do código, alterando as configurações da sessão:

ini_set('session.gc_maxlifetime', 3600);  // Define 1 hora como tempo de expiração

  • Controle de tempo no lado do cliente: O PHP armazena o identificador da sessão no cliente por meio de um cookie. Você pode configurar o tempo de expiração deste cookie utilizando session.cookie_lifetime.
ini_set('session.cookie_lifetime', 3600);  // Expiração do cookie em 1 hora

Quando se trabalha com sessões, é importante implementar medidas de segurança para evitar ataques como fixação de sessão (session fixation) ou roubo de sessão. Algumas boas práticas incluem:

  • Regeneração do ID da sessão: A cada novo login ou ação importante, é recomendado regenerar o ID da sessão para dificultar a captura de uma sessão antiga ou comprometida.
session_regenerate_id(true);  // Regenera o ID da sessão

  • Uso de cookies seguros: Para garantir que o cookie da sessão seja enviado apenas por conexões seguras (HTTPS), ative a opção session.cookie_secure no php.ini.

Conclusão

As sessões são um recurso fundamental em PHP para armazenar e gerenciar informações durante a navegação do usuário. Elas são amplamente utilizadas para funcionalidades como autenticação de usuários, preferências de navegação e manutenção de dados entre páginas. Com o uso adequado das funções de sessão, você pode garantir uma experiência de usuário eficiente e segura.