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 arquivophp.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
nophp.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.