Passando o ID de sessão
Existem dois métodos para a propagação do id de sessão:
O módulo de sessão suporta ambos os métodos. Cookies são melhores, mas
como nem sempre eles estão disponíveis, também é oferecido um método
alternativo. O segundo método embute o id de sessão diretamente nas URLs.
O PHP é capaz de transformar links de forma transparente. Se a opção
de tempo de execução session.use_trans_sid
estiver habilitada,
URIs relativas serão alteradas automaticamente para conter o ID da sessão.
Nota:
O arg_separator.output,
diretiva php.ini, permite configurar o separador de argumentos. Para completa
conformidade com XHTML, especifique & aqui.
Alternativamente, pode ser usada a constante SID
, a qual é
definida se uma sessão é iniciada. Se o cliente não enviou um cookie de sessão
apropriado, a constante terá o formato session_name=session_id
.
Se não, ela será uma string vazia. Dessa forma, ela pode ser colocada
incondicionalmente em URLs.
O exemplo a seguir demonstra como registrar uma variável e
como criar um link corretamente para outra página usando o SID
.
Exemplo #1 Contando o número de acessos de um único usuário
<?php
session_start();
if (empty($_SESSION['count'])) {
$_SESSION['count'] = 1;
} else {
$_SESSION['count']++;
}
?>
<p>
Olá visitante, você acessou esta página <?php echo $_SESSION['count']; ?> vezes.
</p>
<p>
Para continuar, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">clique
aqui</a>.
</p>
A função htmlspecialchars() pode ser usada ao mostrar o SID
com o intuito de prevenir ataques relacionados a XSS.
Mostrar o SID
, como mostrado acima, não é necessário se
--enable-trans-sid foi usado para compilar o PHP.
Nota:
Para URLs não-relativas, assume-se que elas apontam para sites externos e
por isso não é adicionado o SID
, já que seria um risco de segurança
vazar o SID
para um servidor diferente.