drope Postado Março 6, 2004 Denunciar Share Postado Março 6, 2004 Iae beleza, alguém sabe explicar como funciona o esquema de sessions gravadas no proprio server? tipo session_id=GA8yTWfaegAGDSsdf87DA0onde descolo um exemplo disso ou um tutorialzinho alguém sabe?vlw!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 §tRuTe® Postado Março 6, 2004 Denunciar Share Postado Março 6, 2004 - 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ásicasAlgumas 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/deserializesession.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.comfalow!!!!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 drope Postado Março 6, 2004 Autor Denunciar Share Postado Março 6, 2004 Valeu Struter, nem pensei em olhar la olha q animal q eu so huauhathx Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ppgsalomao Postado Março 6, 2004 Denunciar Share Postado Março 6, 2004 Ah Struter ... da ateh medo de ler isso aí !!é muita coisa !!Depois eu vejo se leio ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 §tRuTe® Postado Março 7, 2004 Denunciar Share Postado Março 7, 2004 auhauhahua...faze o q não é?......eu na vontade de aprende q eu to....to lenu tudim fi......!!!inda mais q eu num faço nada nesse meu trampo....auhahuauhafalow!!!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
drope
Iae beleza, alguém sabe explicar como funciona o esquema de sessions gravadas no proprio server? tipo session_id=GA8yTWfaegAGDSsdf87DA0
onde descolo um exemplo disso ou um tutorialzinho alguém sabe?
vlw!!!
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
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.