Informática Numaboa
SESSION no PHP
Seg 13 Ago 2007 22:00 |
- Detalhes
- Categoria: PHP
- Atualização: Quinta, 12 Março 2009 21:52
- Autor: vovó Vicki
- Acessos: 59490
Um problema que atormenta os programadores iniciantes e de nível intermediário é a transferência ou disponibilização de variáveis entre várias páginas. Na linguagem PHP costuma-se usar os métodos POST ou GET que, mesmo sendo bastante simples, ainda causam confusão. Imagine agora o tamanho da encrenca se quisermos disponibilizar dados que sejam exclusivos para cada um dos usuários. A tábua da salvação são as funções de gerenciamento do todo poderoso PHP :smile:
Session
As funções para manipulação de sessões oferecidas pelo PHP permitem preservar dados ao longo de acessos subsequentes. Cada visitante que acessar seu site recebe uma identificação única chamada de ID de sessão. Esta ID pode ser armazenada num cookie na máquina do usuário ou ser propagada através da URL.
Uma vez criada, a sessão pode registrar variáveis que ficarão disponíveis no array $_SESSION, de escopo global, enquanto você não encerrar compulsoriamente a sessão ou se o tempo de vida da mesma não tiver se esgotado. Para "pilotar" sessões o PHP disponibiliza um arsenal de funções fáceis de serem aplicadas quando se entende o princípio do mecanismo SESSION.
Funções da SESSION
- session_cache_expire -- Retorna quando o cache atual expira
- session_cache_limiter -- Obtém e/ou define o limitador do cache atual
- session_commit -- O mesmo que session_write_close()
- session_decode -- Decodifica os dados da seção a partir de uma string codificada
- session_destroy -- Destrói todos os dados registrados na sessão
- session_encode -- Codifica os dados da seção numa string
- session_get_cookie_params -- Obtém os parâmetros do cookie da sessão
- session_id -- Obtém e/ou define a ID da sessão ativa
- session_is_registered -- Verifica se uma variável global foi registrada
- session_module_name -- Obtém e/ou define o módulo da sessão
- session_name -- Obtém e/ou define o nome da sessão
- session_regenerate_id -- Atualiza a ID da sessão substituindo-a por uma nova
- session_register -- Registra uma ou mais variáveis globais
- session_save_path -- Obtém e/ou define o caminho para salvar os dados da sessão/li>
- session_set_cookie_params -- Define os parâmetros do cookie da sessão
- session_set_save_handler -- Define funções de armazenamento da sessão em nível de usuário
- session_start -- Inicializa os dados da sessão
- session_unregister -- Cancela o registro de uma variável global da sessão
- session_unset -- Libera todas as variáveis da sessão
- session_write_close -- Escreve os dados da sessão e a encerra
Iniciando uma sessão
Pode-se usar tanto a função session_start quanto a função session_register para iniciar uma sessão. A função session_register, por padrão, chama a função session_start para verificar se já há ou não uma sessão aberta: se não houver, uma nova sessão é inicializada; se houver, o trabalho continua na sessão que já está inicializada.
contador =
Esta sessão já está durando segundos.
?>Quando um usuário acessar esta página pela primeira vez, a instrução session_start inicializa uma nova sessão porque, para este usuário, ainda não existe uma sessão definida; se um usuário que já possui uma sessão acessar novamente esta página, então a sessão é apenas reativada.
:atencao: A instrução session_start (ou session_register) PRECISA ser chamada ANTES de qualquer saída HTML! É por este motivo que o código PHP precede o código HTML.
Logo em seguida são definidas as variáveis $conta e $inicio. A variável $conta recebe o valor inicial 1 e a variável $início guarda a data e a hora do primeiro acesso. Estas são registradas na sessão usando a função session_register.
:atencao: Observe que, para registrar uma variável, usa-se o
Novos valores para variáveis da sessão podem ser registrados através da função session_register ou diretamente no array da sessão. Observe que o valor da variável "conta" é atualizado usando o segundo método (linha 13). Para acessar um dos elementos do array, utiliza-se o nome do mesmo ($_SESSION, que precisa ser escrito com letras maiúsculas!) com o nome do elemento entre aspas e entre colchetes (e não entre parênteses!).
Verificando a sua sessão
Quando você acessou esta página pela primeira vez, você abriu uma sessão só para você. O resultado é o seguinte:
- Contador: 1
- Duração: 0 segundos
Se você recarregar esta página, o contador vai mostrar um acesso adicional e um tempo maior de duração da sua sessão. Experimente!
O pulo do gato
Mas qual é a vantagem de ciscar valores de variáveis de uma sessão para usá-los na mesma página? Eu diria que a vantagem é pouca ou quase zero. Acontece que, mesmo que o usuário que abriu a sessão troque de página, a sessão não é extinta, ou seja, as variáveis registradas continuam à nossa disposição. Melhor do que isto, não é preciso colocar estas variáveis e seus valores em campos escondidos (hidden) de formulários ou como parâmetros no endereço de links para transferi-las para outras páginas - as variáveis e seus valores ficam na retaguarda, gerenciadas pelo PHP, prontas para serem usadas quando for conveniente.
Como ciscar os valores? Ficando no exemplo dado, basta adicionar um
ou
em qualquer ponto de qualquer outra página para obter os valores desejados. É aí que está o pulo do gato :smile:
:atencao: NÃO ESQUEÇA: todas as páginas que se referirem à sessão precisam chamar a função session_start() ANTES de qualquer saída HTML!