Exemplos
PHP Manual

Nota:

A partir do PHP 4.1.0, $_SESSION está disponível como uma variável global como $_POST, $_GET, $_REQUEST e assim por diante. Diferentemente de $HTTP_SESSION_VARS, $_SESSION é sempre global. Entretanto, você não precisa usar a palavra global para $_SESSION. por favor note que esta documentação foi modifcada para usar $_SESSION em todos os lugares. Você pode substituir $HTTP_SESSION_VARS por $_SESSION, se você prefirir. Também note que você precisa começar a sua sessão usando session_start() antes que $_SESSION esteja disponível.

As chaves para a array associativa $_SESSION estão sujeitas ao mesmas limitações que as os nomes de variáveis regulares do PHP, ex elas não podem começar com um numero e devem começar com uma letra ou sublinhado;. Para maiores detalhes veja a sessão sobre variaveis neste manual.

Se register_globals estiver desativado, apenas membros da matriz associativa global $_SESSION podem ser registrados como variáveis de sessão. As variavéis de sessão restauradas apenas estarão disponíveis na array $_SESSION.

O uso de $_SESSION (ou $HTTP_SESSION_VARS com PHP 4.0.6 ou anterior) é recomendado para melhor segurança e facilidade de leitura do código. Com $_SESSION, não há necessidade de usar as funções session_register(), session_unregister(), session_is_registered(). Variáveis de sessão são acessíveis como qualquer outra variável.

Exemplo #1 Registrando uma variável com $_SESSION.

<?php
session_start
();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if (!isset($_SESSION['count'])) {
  
$_SESSION['count'] = 0;
} else {
  
$_SESSION['count']++;
}
?>

Exemplo #2 Desregistrando uma variável com $_SESSION e register_globals desabilitado.

<?php
session_start
();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
unset($_SESSION['count']);
?>

Cuidado

NÃO desregistre toda a $_SESSION com unset($_SESSION) já que isso irá desativar o registro de variáveis de sessão atráves da superglobal $_SESSION.

Aviso

Você não pode usar referências em variáveis de sessão já que não existe uma maneira de restaurar uma referência a outra variável.

Se register_globals estiver ativada, então cada variável global pode ser registrada como uma variável de sessão. Após o reinicio da sessão, estas variáveis serão restauradas a suas variáveis globais correspondentes. Já que o PHP deve saber quais variáveis globais devem ser registradas como variáveis de sessão, o usuário precisa registrar as variáveis com a função session_register(). Você pode evitar isso simplesmente definindo entradas em $_SESSION.

Cuidado

Antes do PHP 4.3, se você estiver usando $_SESSION e você desabilitou register_globals, não use session_register(), session_is_registered() ou session_unregister(). Desabilitar register_globals é recomendado por motivo de segurança e performance.

Se register_globals estiver ativada, então as variáveis globais e as entradas em $_SESSION irão automaticamente referenciar os mesmos valores que estejam registrados na instancia da sessão anterior. Entretanto, se a variável for registrada por $_SESSION então a variável global estará disponível a partir da proxima requisição.

Existe um defeito no PHP 4.2.3 e anterior. Se você registrar uma nova variável de sessão usando session_register(), a entrada no escopo global e a entrada em $_SESSION não irão se referir ao mesmo valor até o próximo session_start(). Ex: uma modificação na variável global recém registrada não será refletida pela entrada em $_SESSION. Isto foi corrigido no PHP 4.3.0.


Exemplos
PHP Manual