downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

Manipuladores de sessões personalizados> <Registrando uma variável com $_SESSION.
Last updated: Fri, 13 Nov 2009

view this page in

Passando o ID de Sessão

Existem dois métodos para a propagação do id de sessão:

  • Cookies
  • URL parameter

O módulo de sessão suporta ambos os métodos. Cookies são melhores, mas como eles nem sempre estão disponíveis, nós também provemos um caminho alternativo. O segundo metodo embute o id de sessão diretamente nas URLs.

O PHP é capaz de transformar os links transparentemente. A menos que você esteja usando o PHP 4.2 ou posterior, você precisa ativar isso manualmente ao compilar o PHP. No Unix, passe --enable-trans-sid para o configure. Se esta opção de compilação e a opção em tempo execução session.use_trans_sid estiverem ativadas, URIs relativas serão modificadas para conter o id de sessão automaticamente.

Nota: A diretiva arg_separator.output php.ini permite a você personalizar o separador de argumentos. Para estar em completa conformidade com XHTML, especifique &amp; aqui.

Alternativamente, você pode usar a constante SID a qual é definida se uma sessão é iniciada. Se o cliente não enviou um cookie de sessão apropriado, ela tem a forma session_name=session_id. Se não, ela expande para uma string vazia. Assim, você pode colocá-la incondicionalmente em URLs.

O exemplo a seguir mostra como registrar uma variável, e como criar um link corretamente para outra pagina usando SID.

Exemplo #1 Contando o número de visitas de um único usuário

<?php

session_start
();

if (empty(
$_SESSION['count'])) {
 
$_SESSION['count'] = 1;
} else {
 
$_SESSION['count']++;
}
?>

<p>
Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times.
</p>

<p>
To continue, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">click
here</a>.
</p>

A função htmlspecialchars() é usada ao mostrar o SID para previnir 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: É assumido para URLs não relativas que apontem para sites externos e assim não é adicionado o SID, já que seria um risco de segurança vazar o SID para um servidor diferente.



add a note add a note User Contributed Notes
Passando o ID de Sessão
Anonymous
25-Nov-2009 10:57
is that a typo on 'to continue, <a href="nextpage.php?'?
CT Thompson
17-Jul-2009 08:17
The previous user is correct, but you can get around this by starting your sessions like this:

session_start($mysession);

Or you can set up an if statement that determines if $mysession is set and whatnot...
a dot nielsen at shikadi dot net
10-Feb-2009 02:49
When you generate URLs yourself using the SID variable, it must come first in the URL parameter list.  For example, if SID expands to "mysession=123" then this does NOT work:

  file.php?var1=value&mysession=123

The SID must come first:

  file.php?mysession=123&var1=value

If the SID does not come first then session_start() does not recognise it and it creates a new session instead of loading the old one.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites