Hospedagem de Sites
 
 
 Home  •  Downloads  •  Minha Conta  •  Forums  
 
   
 
Menu Principal
 Home
 Cadastrar
 Procurar
 Contato

 Visitantes
 Artigos
 Enquetes
 Web Links
 Recomende-nos
 Manual do PHP
 Manual PHP-Nuke
 Guia Linux Básico
 Guia Linux Avançado
 Anuncie Conosco
 Patrocinador
· Hospedagem
· Planos de Hospedagem
· Hospedagem PHP
· Revenda

 Usuários
 Sua Conta
 Downloads
 Lista de Membros
 Enviar Notícias
 Mensagens Privado
 Contato
 Conteúdo

 Informações
Visual Elegante

Um lindo modelo da OSCommerce oferecido em parceria com a Hospedagem Segura e o Portal PHPMania:




Conheça a versão demo instalada no servidor da Hospedagem Segura

Faça o download grátis da loja Clicando aqui!

Usuários
Bem-vindo(a) Visitante


Apelido

Senha


 

Cadastramento

 · Hoje: 0

 · Ontem: 0

 · Total: 63120


5 Últimos Registros   pP1rY2aK9d   aH8iP6vO2e   obhguja37   azvpkxe10   tjazxgu94

Pessoas on-line

 Visitantes: 24

 Cadastrados: 0

 Total online: 24

Ajude o PHPMania

Faça uma doação ao nosso Portal, ajude o PHPMania!

Sessões

XCV. Sessões

Introdução

Suporte a sessões no PHP consiste em uma forma de preservar certos dados através de acessos subseqüentes. Isto te permite construir aplicações mais personalizadas e aumenta a atração ao seu web site.

Se você está familiarizado com o gerenciamento de sessões do PHPLIB, você irá notar que alguns conceitos são similares ao suporte de sessões do PHP.

Um visitante acessando seu web site está determinado por uma única id, a então chamada id de sessão. Esta ou é guardada em um cookie do lado do usuário ou está na URL.

Sessões te permite registrar arbitrariamente números de variáveis para estarem lado a lado com os requerimentos. Quando um visitante acessa seu site, o PHP checará automaticamente (se session.auto_start está definida para 1) ou no seu pedido (explicitamente através da session_start() ou implicitamente através da session_register()) se uma id de sessão especifica foi enviada com o pedido. Se este é o caso, o ambiente anterior guardado é restaurado.

Todas as variáveis registradas são publicadas em série após o pedido terminar. Variáveis registradas que estão indefinidas estão marcadas como estando não definida. Num acesso subseqüente, estas não estarão definidas pelo módulo da sessão a menos que o usuário defina elas mais tarde.

Nota: Manipulação de sessões foi adicionado no PHP 4.0.

Requisitos

Nenhuma biblioteca externa é necessária para compilar esta extensão.

Instalação

Suporte a sessões esta habilitado no PHP 4.0 por definição. Se você não gostaria de seu PHP com suporte a sessão, você especifica a opção de configuração --disable-session.

Configuração durante execução

O sistema de suporte de sessão oferece no arquivo php.ini numerosas opções de configuração. nós daremos um breve resumo.

  • session.save_handlerdefine o nome do operador(funções-handler) que é usado para guardar e resgatar dados associados com a sessão. Por definição files.

  • session.save_path define o argumento que que é passado para o save handler. Se você escolher o default files handler, este é o caminho onde os arquivos serão criados. Por definição para /tmp. Se a profundidade do caminho de session.save_path é maior do que 2, coleção de lixo não será executada(garbage collection - gc).

    Atenção

    Se você deixar isto definido para um diretório muito visível, tal como /tmp (o padrão), outros usuários do servidor poderão ser capazes de assumir o controle da sessão obtendo a lista de arquivos naquele diretório.

  • session.name especifica o nome da sessão que é usada como nome de cookie. Ela poderia apenas conter caracteres alfanuméricos. Por definição PHPSESSID.

  • session.auto_start especifica se o módulo da sessão inicia a sessão automaticamente num pedido na inicialização. Por definição 0 (desabilitado).

  • session.cookie_lifetime especifica o tempo de vida de um cookie em segundos que é enviado para o navegador. O valor 0 significa "até que o navegador seja fechado." Por definição 0.

  • session.serialize_handler define o nome do operador(handler) que é usado para serializar/deserializar dados. Correntemente, um formato interno do PHP (nome php) e WDDX é suportado (nome wddx). WDDX está apenas disponível, se o PHP está compilado com o suporteWDDX support. Por definição php.

  • session.gc_probability especifica a probabilidade que a rotina gc (coleção de lixo-garbage collection) é iniciada em cada pedido em porcentagem. Por definição 1.

  • session.gc_maxlifetime especifica o número de segundos depois que o dado será visto como 'lixo' e limpado.

  • session.referer_check contém a substring que você quer checar cada HTTP Referer para. Se o Referer foi enviado pelo cliente e a substring não foi encontrada, a id de sessão embutida será percebida como inválida. Por definição uma string vazia.

  • session.entropy_file dá um caminho para um recurso externo(file) que será usado como um entropy source na criação da id de sessão. São exemplos /dev/random ou /dev/urandom que estão disponéveis em muitos Sistemas Unix.

  • session.entropy_length especifíca o número de bytes que serão lidos do arquivo especificado acima. Por definição 0 (desabilitada).

  • session.use_cookies especifica se o módulo usará cookies para gravar a id de sessão no lado do cliente. Por definição 1 (habilitada).

  • session.use_only_cookies especifica se o módulo usaráapenas cookies para gravar a id de sessão no lado do cliente. Por definição 0 (desabilitada). Habilitar esta definição previni ataques envolvendo id de sessão passadas em URLs. Esta definição foi adicionada no PHP 4.3.0.

  • session.cookie_path especifica o caminho para definir em session_cookie. Por definição /.

  • session.cookie_domain especifica o domínio para para definir em session_cookie. Nenhuma definição.

  • session.cache_limiter especifica o método de controle do cache para usar para páginas de sessão (none/nocache/private/private_no_expire/public). Por definição nocache.

  • session.cache_expire especifica o tempo de vida para páginas de sessão no cache em minutos, isto não tem efeito para para limitador sem cache. Por definição 180.

  • session.use_trans_sid se o suporte de sid transparente está habilitado ou não, se habilitado por compilação com --enable-trans-sid. Por definição 1 (habilitado).

  • url_rewriter.tags especifica quais tags html estão reescritas para incluir id de sessão se o suporte transparente de sid está habilitado. Por definição a=href,area=href,frame=src,input=src,form=fakeentry

A configuração de track_vars e register_globals influencia em como as variáveis da sessão conseguem armazenar e devolver.

Nota: No PHP 4.0.3, track_vars está sempre ligada.

Tipos Resource

Esta extensão não possui nenhum tipo resource.

Constantes Predefinidas

As contantes abaixo são definidas por esta extensão e somente estarão disponíveis quando a extensão foi compilada com o PHP ou carregada dinamicamente durante a execução.

SID (string)

Constantes contendo o nome da sessão e o ID da sessão na forma de "name=ID" ou uma string vazia no caso de o ID não tenha sido apropriadamente salvo em um cookie de seção.

Exemplos

Nota: No PHP 4.1.0, $_SESSION está disponível como variável global apenas como $_POST, $_GET, $_REQUEST e assim por diante. Não como $HTTP_SESSION_VARS, $_SESSION está sempre global. Então, global poderia não ser usada para $_SESSION.

Se track_vars is habilitada e register_globals está desabilitada, apenas aquelas membros da matriz associativa $HTTP_SESSION_VARS podem ser registradas em uma sessão de variáveis. A sessão de variáveis restauradas somente estarão disponíveis na matriz $HTTP_SESSION_VARS.

Exemplo 1. Registrando uma variável com track_vars habilitada

<?php
session_start();
if (isset($HTTP_SESSION_VARS['count'])) {
   $HTTP_SESSION_VARS['count']++;
}
else {
   $HTTP_SESSION_VARS['count'] = 0;
}
?>

Uso de $_SESSION (ou $HTTP_SESSION_VARS com PHP 4.0.6 ou inferior) é recomendado por segurança e code readablity. Com $_SESSION ou $HTTP_SESSION_VARS, não á necessidade de usar as funções session_register()/session_unregister()/session_is_registered(). Usuários podem acessar variável de sessão como uma variável normal.

Exemplo 2. 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 3. Desregistrando uma variável com $_SESSION.

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

Se a register_globals está habilitada, então todas as variáveis globais podem ser registradas como variáveis de sessão e as variáveis de sessão serão restauradas para a variável global correspondente. Visto que o PHP deve saber quais variáveis globais estão registradas como variáveis de sessão, usuaários devem registrar variáveis com a função session_register() enquanto $HTTP_SESSION_VARS/$_SESSION não necessita utilizar session_register().

Cuidado

Se você está usando $HTTP_SESSION_VARS/$_SESSION e desabilitada register_globals, não faça uso de session_register(), session_is_registered() e session_unregister().

Se você habilita register_globals, session_unregister() poderiam ser usadas desde que as variáveis de sessão estejam registradas como variáveis globais quando os dados da sessão não estão em série. Desabilitar register_globals é recomendado para ambas razões, segurança e performance.

Exemplo 4. Registrando uma variável com register_globals habilitada

<?php
if (!session_is_registered('count')) {
    session_register("count");
    $count = 0;
}
else {
    $count++;
}
?>

Se ambas track_vars e register_globals estão habilitadas, então as variáveis globais e as entradas $HTTP_SESSION_VARS/$_SESSION farão referência ao mesmo valor para as variáveis já registradas.

Se o usuário utiliza session_register() para registrar variável de sessão, $HTTP_SESSION_VARS/$_SESSION não terão esta variável numa matriz até que ela seja lida de um armazém de sessão. (i.e. até o próximo pedido)

Passando a ID de sessão

Há dois métodos para propagar uma id de sessão:

  • Cookies

  • Parâmetro URL

Módulo de sessão suporta ambos os métodos. Cookies são mais eficientes, mas se eles não estiverem autorizados (clientes não são obrigados a aceita-los), nós não podemos conter deles. O segundo método inclui a id de sessão diretamente na URL.

PHP é capaz de fazer isto transparentemente quando compilado com --enable-trans-sid. Se você habilitar esta opção, URIs ligadas serão automaticamente mudadas para conter a id de sessão. Alternativamente, você pode usar a constante SID que é definida, se o cliente não enviar o cookie apropriado. SID é do formulário session_name=session_id ou é uma string vazia.

Nota: A diretriz arg_separator.output php.ini permite personalizar o argumento separador.

O seguinte exemplo demonstra como registrar uma variável, e e como ligar corretamente a outra página usando SID.

Exemplo 5. Contar o número de visitas de um simples usuário

<?php
if (!session_is_registered('count')) {
    session_register('count');
    $count = 1;
}
else {
    $count++;
}
?>

Hello visitor, you have seen this page <?php echo $count; ?> times.<p>;

<?php
# the <?php echo SID?> (<?=SID?> can be used if short tag is enabled) 
# is necessary to preserve the session id
# in the case that the user has disabled cookies
?>

To continue, <A href="modules.php?name=php_how_to&page=nextpage.php?<?php echo SID?>">click here</A>

A <?=SID?> não é necessário, se --enable-trans-sid foi usada para compilar o PHP.

Nota: URLs não ligadas estão assumidas para apontar para sites externos e portanto não anexam a SID, pois ela poderia escapar para outro servidor.

Session handlers customizáveis

Para implementar o armazenamento num banco de dados, ou qualque outra forma de aramzenamento, você vai precisar usar session_set_save_handler()* para define as funções de armazenamento que são usadas (* to create a set of user-level storage functions).

Índice
session_cache_expire -- Retorna o prazo do cache atual
session_cache_limiter -- Obtém e/ou define o limitador do cache atual
session_decode -- Decifra dado de sessão de uma string
session_destroy -- Destrói todos os dados registrados para uma sessão
session_encode --  Codifica os dados da sessão atual como uma 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 atual
session_is_registered --  Descobre se uma variável global está registrada numa sessão.
session_module_name -- Obtém e/ou define o módulo da sessão atual
session_name -- Obtém e/ou define o nome da sessão atual
session_regenerate_id --  Atualiza o id da seção atual com um novo gerado
session_register --  Registrar uma ou mais variáveis globais na sessão atual
session_save_path -- Obtém e/ou define o save path da sessão atual
session_set_cookie_params --  Define os parâmetros do cookie de sessão
session_set_save_handler --  Define a sequência de funções de armazenamento
session_start -- Inicia dados de sessão
session_unregister --  Desregistra uma variável global da sessão atual
session_unset --  Libera todas as variáveis de sessão
session_write_close -- Escreve dados de sessão e termina a sessão
PHP Mania - Copyright © 2012

Planos de Hospedagem - Hospedagem PHP - Hospedagem ASP - Revenda de Hospedagem - Hospedagem de Sites - Construtor de Sites
Hospedagem Java - Hospedagem MySQL - Hospedagem JSP - Hospedagem Sql Server - Servidor Hospedagem - Hospedagem Domínio
Cloud Server Cloud computing Hospedagem Windows - Hospedagem Linux - Servidor Streaming - Construtor de Blog

PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Tempo para gerar esta página: 0.45 segundos

| DAJ_Glass phpbb2 style by Dustin Baccetti | PHP-Nuke theme by www.nukemods.com |