Ir para conteúdo
Fórum Script Brasil
  • 0

Session No Server


drope

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

- O que é uma ?session??

- Configurações básicas

- Como utilizar?

O que é uma ?session??

    Nada mais é do que uma maneira de preservar(guardar, armazenar) certos dados para serem utilizados futuramente. Podemos por exemplo, construir um website com sistema de área restrita, ou seja, acesso a área restrita somente os usuário cadastrados no sistema. Quando o usuário quiser acessar a parte restrita do website ele terá que informar um usuário e senha. Agora imagine que para cada página da área restrita o usuário tenha que digitar o usuário e senha! Não há quem agüente!

Agora se implementarmos um sistema de login com session, o usuário terá que digitar apenas uma vez o usuário a senha é pronto! A cada página da área restrita que o usuário acessar o sistema faz uma verificação se o usuário está cadastrado no sistema e lhe dará permissão de acesso à página!

Configurações básicas

Algumas coisas que podem ajudar:

track_vars: se estiver ativo, algum métods como: Environment, GET, POST, Cookie, e variáveis de ambiente(Server variables) podem ser resgatadas utilizando arrays globais como $HTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, e $HTTP_SERVER_VARS.

Veja um exemplo usando track_vars:

   

<?

        session_register("count");

        $HTTP_SESSION_VARS["count"]++;

    ?>

register_globals: se estiver este modo ativo você não precisa necessariamente recuperar as utilizando os métodos $HTTP_ENV_VARS, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, e $HTTP_SERVER_VARS.

Veja um exemplo usando register_globals:

<?

        session_register("count");

        $count++;

    ?>

Configurações no php.ini:

session.save_handler: define o nome que vai ser usado para guardar e recuperar dados associados a sessão.

session.save_path: define o local onde serão criadas as sessões(arquivos). Local padrão /tmp, para utilização no windows defina algo como c:\tmp. Cuidado com a permissão de leitura do diretório, pois se o mesmo tiver permissão de leitura global, outros usuários poderão recuperar a lista de sessões armazenadas neste local.

session.name: especifica o nome da sessão usada no nome do cookie. O nome deve conter apenas caracteres alfanuméricos. Padrão PHPSESSID.

session.auto_start: especifica se sessão iniciará automaticamente. Padrão é 0 (zero, ou seja, desativado)

session.cookie_lifetime: especifica o tempo em segundos que vai ser enviado ao browser. O valor 0 (zero) indica "até o browser ser fechado". Padrão 0 (zero).

session.serialize_handler: define o nome que será usado para os dados serialize/deserialize

session.gc_probability: especifíca a rotina gc (garbage collection) seja startada a cada nova seção. Padrão 1.

session.gc_maxlifetime: especifíca o numero de segundos que os dados ficam armazenados na "lixeira" até serem retirados.

session.referer_check: contém a substring de avaliação do cabeçalho HTTP. Se o for enviado um cabeçalho pelo cliente e a subtring não for encontrada, a sessão é é marcada como inválida. Padrão é string vazia.

session.entropy_file: trajeto a um recurso externo (arquivo) que seja usado como uma fonte adicional no processo de criação da identificação da sessão.

session.entropy_length: especifica o numero de bytes que podem ser lidos pelo arquivo especificado. Padrão é 0 (desabilitado).

session.use_cookies: especifica se será utilizado cookies para identidicar a sessão do usuário. Padrão 1 (habilitado).

session.cookie_path: especifíca o caminha(path) onde ficará armazenado o cookie de identificação da sessão do usuário. Padrão / (raiz).

session.cookie_domain: especifica o domínio setado para o cookie de sessão. Padrão é nenhum (none) para todos.

session.cache_limiter: especifica o método de controle do cache usado para páginas de sessão (nocache/private/public). Padrão é nocache.

session.cache_expire: especifica tempo de vida das páginas de sessão "cacheadas" em minutos, não tem efeito nenhum quando utilizado método nocache. Padrão é 180min.

session.use_trans_sid: especifíca se o suporte a identificação de transações está ativo ou não. Pode ser compilado com -enable-trans-id. Padrão 1 (habilitado).

url_rewriter.tags: especifíca se tags HTML serão reescritas para inclusão de uma sesão, se trans_id estiver ativo. Padrões a=href, area=href, frame=src, input=src, form=fakeentry.

Como utilizar?

    Utilizar sessões é muito fácil, veja as funções:

    session_start: inicia dados de uma sessão

    session_destroy: encerra a sessão, eliminando todos os dados registrados

    session_name: nome da sessão

    session_module_name: módulo da sessão

    session_save_path: localização da sessão

    session_id: identificação da sessão

    session_register: registrar uma ou mais variáveis na sessão

    session_unregister: eliminar uma variável da sessão

    session_unset: limpa todas as variáveis da sessão

    session_is_registered: verifica se a variável está registrada na sessão

    session_get_cookie_params: captura cookie com os parâmetros da sessão

    session_set_cookie_params: define cookie com os parâmetros da sessão

    session_decode: decodifica dados de uma string na sessão

    session_encode: codifica dados de uma string na sessão

    session_set_save_handler: define nível do usuário p/ funções de armazenamento

    session_cache_limiter: verifica ou define limite de cache para sessão

    session_write_close: escreve dados e finaliza sessão

    session_start

    Comando utilizado para iniciar uma nova sessão ou iniciar uma sessão existente que é indicada por cookie ou passado pelo método GET.

Se não quiser que a identificação da sessão seja setada(marcado) por um cookie, mas também não tem acesso ao php.ini, poderá utilizar o seguinte:

ini_alter("session.use_cookies","0");

Obs: É necessário declarar session_start() no início de cada script onde for necessário alguma informação que esteja registrada na sessão.

    session_destroy

    Comando utilizado para encerrar uma sessão existente.

    <?

session_start(); // antes de destruir a sessão, é necessário iniciá-la.

        session_destroy();

    ?>

    Atenção! quando utilizar cookie, com o comando session_destroy os cookies não são eliminados.

    session_name

    Nome da sessão que referencia a identificação da sessão no cookie ou na URL. Deverá somente conter caracteres alfanuméricos. Importante! Quando for utilizado session_name, deverá ser chamado antes mesmo do session_start(), veja um exemplo:

    // primeiro arquivo

    <?

        // marcando o nome da sessão

        $name = session_name("tuto_session");

        echo $name.' é o nome da sua sessão!!!';

    ?>

    // segundo arquivo

    <?

        // chamando a sessão pelo nome

        session_name("tuto_session");

        // startando a sessão

        session_start();

    ?>

session_module_name

    Pode-se criar funções e registra-las na seção. Para tal é utilizado o comando session_set_save_handler(). Veja a sintaxe:

    void session_set_save_handler(string open, string close, string read, string write, string destroy, string gc);

    Explicando as funções:

    bool open (string save_path, string sess_name);

    Esta função é executada na inicialização da sessão; pode ser utilizado para preparar uma função, inicializar variáveis, e outras coisas. Para isso, é passados 2(dois) argumentos. O primeiro é o path(caminho) onde a sessão foi salva. A variável pode ser especificada no php.ini ou pela função session_save_path(). O segundo argumento é o nome da sessão, como padrão é usado PHPSESSID. Retorna true(verdadeiro) em caso de sucesso e false(falso) caso contrário.

    bool close ();

    Esta função é executada quando a sessão é destruída. Usado para liberar memória ou destruir variáveis. Não é necessário passar nenhum argumento e retorn true(verdadeiro) em caso de sucesso ou false(falso) caso contrário.

    mixed read (string sess_id, );

    Esta função é chamada sempre que a sessão é iniciada. Retorna da sessão identificada por sess_id e retorna uma string serialized. Se não existir sessão com a identificação informada é retornada uma string "" (vazia). Se ocorrer algum erro é retornado false(falso).

    bool write (string sess_id, , string value);

    Quando desejar salvar a sessão, esta função é chamada. O primeiro argumento é a identificação da sessão. O segundo argumento, é uma string serialized das variáveis de sessão. A função retorna true(verdadeiro) em caso de sucesso e false(falso) caso contrário.

    bool destroy (string sess_id, );

    Sempre que for chamado o session_destroy(), esta função é executada. Destrói todos os dados associados a sessão sess_id. Retorna true(verdadeiro) em caso de sucesso e false(falso) caso contrário.

    bool gc (int max_lifetime, );

    Esta função é chamada quando as sessões são inicadas, provavelmente especificado em gc_probability. Usado para remover as sessões que não são alteradas por um determinado tempo, este definido em segundo na função gc_maxlifetime. Retorna true(verdadeiro) em caso de sucesso e false(falso) caso contrário.

    Caso queira, por exemplo, guardar informações do banco de dados mySQL numa sessão, veja o exemplo de como proceder:

    function sess_open($save_path, $sess_name)

    {

    }

    function sess_read($sess_id)

    {

    }

    function sess_write($sess_id, $val)

    {

    }

    function sess_destroy($sess_id)

    {

    }

    function sess_gc($max_lifetime)

    {

    }

    Para registrar as chamadas das funções, utilizamos a função session_set_save_handler().

    session_set_save_handler("sess_open", "", "sess_read", "sess_write", "sess_destroy", "sess_gc");

    session_save_path

    Utilizado para indicar o path(caminho) onde será gravada a sessão e/ou onde será encontrada a sessão. Pode ser indicado no php.ini ou via script utilizando session_save_path("path_que_desejar");

    Atenção! Existe um problema de incompatibilidade entre o Linux/Unix e o Windows, pois a forma de indicar o path é diferente, veja:

        No linux/Unix: session_save_path("/tmp");

        No windows: session_save_path("c:\tmp");

session_id

    Essa é a identificação de sessão aberta ao usuário.

    A constante SID é gerada, contendo o ID da sessão, para que não haja problemas com perda da sessão pelo fato de utilizar um cookie para armazenar o ID da sessão e a mesma poder ser aberta em qualquer página do site, com o SID é possível passar o ID pela url e independente de o usuário ter ou não cookies habilitados a sessão vai funcionar, veja o exemplo:

    <FORM ACTION="this.php?<?=SID?>">

    Lembre-se que o nome default(padrão) da sessão é PHPSESSID, sendo possível altera-lo no session.name dentro do arquivo php.ini

    session_register

    Usado para registrar um ou mais valores na sessão, veja o exemplo:

    // primeiro arquivo - registrando o valor

    <?

        session_start();

        $var = "Tutorial";

        session_register("var"); // note que não é utilizado o $, apenas o nome

    ?>

    // segundo arquivo - resgatando o valor registrado

    <?

        session_start();

        echo "$var"; // o retorno na tela deve ser "Tutorial"

    ?>

    session_unregister

    O processo inverso ao session_register, o session_unregister é para apagar o valor registrado na sessão, veja o exemplo:

    // primeiro arquivo - registrando o valor na sessão

    <?

        session_start();

        $var = "Tutorial";

        session_register("var");

    ?>

    // segundo arquivo - apagando o valor registrado

    <?

        session_start();

        session_unregister("var");

    ?>

    session_unset

    Apaga todas as variáveis das sessões, veja o exemplo:

    <?

        session_unset();

    ?>

    Note que session_unset apaga apenas as variáveis da sessão.

    session_is_registered

    Utilizado para procurar se uma determinada variável já foi registrada na sessão, veja o exemplo:

    <?

        session_start();

        if (session_is_registered("var")) {

            die "tudo ok";

        } else {

            die "ainda não foi registrado";

        }

    ?>

session_get_cookie_params

    Busca os parâmetros da sessão no cookie, retorna um array com os seguintes parâmetros:

    "lifetime" = tempo de vida do cookie

    "path" = o local onde as informações estão armazenadas

    "domain" = o domínio do cookie

    "secure" = se o cookie foi enviado com conexão segura. (Apartir da versão 4.0.4)

    session_set_cookie_params

    Seta os parâmetros da sessão no cookie, veja a sintaxe:

    void session_set_cookie_params ( int lifetime [, string path [, string domain]])

    a explicação dos parâmetros pode ser lida na função session_get_cookie_params

    session_decode

    Decodifica todos os dados da sessão, veja a sintaxe:

    bool session_decode ( string data)

    session_encode

    Codifica todos os dados da sessão, veja a sintaxe:

    string session_encode ( void)

    session_encode retorna uma string contendo todos os dados da sessão, codificados.

    session_set_save_handler

    Define algumas configurações relacionadas ao uso das sessões pelo usuário, veja a sintaxe:

    void session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc)

    Nota: se preferir, isso pode ser configurado diretamente no arquivo php.ini

    Exemplos: http://www.php.net/manual/en/function.sess...ave-handler.php

    session_cache_limit

    Esta função é utilizada para controlar o cache do HTTP enviado pelo usuário, veja a sintaxe:

    string session_cache_limiter ( [string cache_limiter])

    alguns exemplos:

    <?

      session_cache_limiter('private');

      $cache_limiter = session_cache_limiter();

      echo "O cache agora é $cache_limiter";

    ?>

    <?

      session_cache_limiter('public');

      $cache_limiter = session_cache_limiter();

      echo "O cache agora é $cache_limiter";

    ?>

    session_cache_expire (PHP 4 CVS only)

    Retorna cache expire corrente, veja a sintaxe:

    int session_cache_expire ( [int new_cache_expire])

    session_write_close

    Escreve os dados e termina a sessão, veja a sintaxe:

    void session_write_close (void)

retirado do phpbrasil.com

falow!!!!!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...