Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais

Na Aldeia

Há 78 visitantes online

3304 registros
0 hoje
9 nesta semana
41 neste mês

Boas vindas: Xico

Estatística

Artigos: 1063
Leituras: 6036619
Arquivados: 21
Downloads: 533
Baixados: 172238
Glossário: 1208
Bibliografia: 25
Links: 90

Visitas de onde

Top 5:
Brasil flag 73%Brasil (47547)
Portugal flag 5%Portugal (3071)
EUA flag 3%EUA (2135)
Rússia flag 0%Rússia (259)
Holanda flag 0%Holanda (239)
65145 visitas de 100 países

Hoje:153
Ontem:2587
No mês:39330
Mês passado:25815
Total:65145
Recorde:3037
No dia:04.03.10
Leituras hoje:19405
Leituras Total:280957
Bots hoje:89
Dados desde:16.02.2010

Login



Kanji da hora




Faça contato






Seg

13

Ago

2007


22:00

SESSION no PHP PDF Imprimir Indique esta página
(35 votos, média 4.1 de 5)
Escrito por vovó Vicki   


Índice do Artigo
SESSION no PHP
Comentários
Todas as páginas

Nível avançado 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 sorriso

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.

<?php
   // Inicializar a sessão
   session_start();
 
   // Registrar variáveis
   if (!session_is_registered("conta")) {
      $conta = 1;
      $inicio = time();
 
      session_register("conta");
      session_register("inicio");
   } else {
      $_SESSION["conta"] = $_SESSION["conta"] + 1;
   }
?>
 
<html>
  <head><title>Sessões</title></head>
  <body>
     <p>contador = <?php echo $_SESSION["conta"]; ?></p>
     <p>Esta sessão já está durando <?php echo time() - $inicio; ?> segundos.</p>
     </body>
</html>
?>

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 nome da variável entre aspas, ou seja, "conta" ao invés de $conta.

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

<?php echo $_SESSION["conta"]; ?>

ou

<?php echo time() - $_SESSION["inicio"]; ?>

em qualquer ponto de qualquer outra página para obter os valores desejados. É aí que está o pulo do gato sorriso

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!



Última atualização ( Qui, 12.03.2009 21:52 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons