+7

Utilizando sessões no PHP

criado por André de Castro Zorzo em 25/03/2002 10:39pm
session.auto_start: especifica se sessão iniciará automaticamente. Padrão é 0 (zero, ou seja, desativado)
<br>
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).
<br>
session.serialize_handler: define o nome que será usado para os dados serialize/deserialize
<br>
session.gc_probability: especifíca a rotina gc (garbage collection) seja startada a cada nova seção. Padrão 1.
<br>
session.gc_maxlifetime: especifíca o numero de segundos que os dados ficam armazenados na "lixeira" até serem retirados.
<br>
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.
<br>
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.
<br>
session.entropy_length: especifica o numero de bytes que podem ser lidos pelo arquivo especificado. Padrão é 0 (desabilitado).
<br>
session.use_cookies: especifica se será utilizado cookies para identidicar a sessão do usuário. Padrão 1 (habilitado).
<br>
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).
<br>
session.cookie_domain: especifica o domínio setado para o cookie de sessão. Padrão é nenhum (none) para todos.
<br>
session.cache_limiter: especifica o método de controle do cache usado para páginas de sessão (nocache/private/public). Padrão é nocache.
<br>
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.
<br>
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).
<br>
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.

Comentários:

Mostrando 1 - 10 de 33 comentários
Meu sistema tem dois logins, para usuario(que logaram com cpf) e para empresas(que logaram com cnpj), para usuario criei a sessao('usuario'), e para empresa criei a sessão ('empresa'), porém a sessão empresa não esta funcionando, se eu colocar cpf, ela entra da mesma forma.

Como eu declaro as sessões? as duas (empresa e usuario)podem ser na mesma pagina php, ou tem q ser uma em cada pagina, fiz uma pra cada, e citei o session_start('empresa') nas paginas para referencia a empresa e da mesma forma para as paginas de login usuario com a session_start('usuario'), não sei como declara, porque quando citamos elas, o arquivo busca em algum arquivo a declaração, e qual é esse arquivo?

Socorro, isso ta mto complicado, não encontrei em lugar nenhum onde explica de duas sessoes e sistemas de login... :(
02/10/2009 8:19pm (~12 anos atrás)

ainda que a resposta seja anos depois :p ao menos pode servir para alguem que venha a ler somente agora esse artigo, como eu. o erro:
A instrução no "0x10079872" fez referência à memória no "0x000000000". A memória não pode ser "read". citado pelo amigo marcelo nao deve ter nada a ver com o codigo, normalmente esse erro que acontece no windows xp é devido a memória defeituosa ou incompativel e pode ser gerado o erro por qualquer instrução, nao importando o codigo certo ou errado (o sistema operacional deve cuidar para que não haja excessões, ou seja, ainda que um programa execute uma instrução inválida, quem deve tratarla é o S.O.), portanto o erro certamente é de hardware.

Parabéns André pelo artigo, foi bastante proveitoso para mim!
13/01/2006 5:27pm (~15 anos atrás)

Thiago disse:
No servidor fica gravado algo para a identificação do usuario na utilização de sessão? como o servidor saber que a sessão é de tal usuario?
14/06/2005 5:24pm (~16 anos atrás)

Atraves da função session_cache_expire você define o tempo de expiração:

session_cache_expire(20);

No caso acima defini para 20 minutos.

Fica na paz.

Renata
01/06/2005 9:38am (~16 anos atrás)

Urair Araújo disse:
Estou tendo dificuldades com a manutenção do registro de ssessions.

Vou ser mais claro:

Eu registro algumas sessions (carrinho de compras).

E eles funcionam normalmente. Tanto o registro das sessions quanto a recuperacao das informacoes das sessions.

Mas se eu deixo o browser uns 30 minutos sem mexer, as sessions somem. São desregistradas.

Como eu faço para que as sessions nunca se desregistrem, a menos que o browser seja fechado?

Estou batendo a cabeça nisso faz semanas.

Por favor me dê uma mão...
11/11/2004 12:00pm (~17 anos atrás)

Estou precisando da ajuda de vcs!!!
Já consigui criar a sessão e processo de autenticação de usuários mas não estou conseguindo fazer com que ela expire depois de um determinado tempo, isto é, o usuário fez o login e passou a acessar outras páginas, como expirar esta sessão depois de 5 minutos por exemplo.
Estou utilizando $_SESSION.
No aguardo
Bresolin
29/07/2004 8:08pm (~17 anos atrás)

Fernando,

não tem como abrir 2 sessões para um único usuário... é uma sessão por vez...

e quanto ao warning que ocorre, nas faqs existem respostas completas para sua duvida..
08/06/2004 7:57am (~17 anos atrás)

ipp e juarez,

realmente por quê ocorre eu não sei, nunca aconteceu comigo... mas creio que esteja relacionado a versão do php.. pois na ultimas versão é aconselhado a utilizar $_SESSION, da maneira como vocês estão utilizando pois session_register deve ficar como "deprecated"...

Abraços
08/06/2004 7:55am (~17 anos atrás)

Olá!
Como eu faço se eu quiser abrir mais de uma sessão? Preciso fazer session_start("nome_da_sessão")? e na hr de usar o session_destroy()? Qual sessão eu estaria destruindo?

Outra pergunta:
Peguei um script de autenticação de usuários aqui no site e funcionou perfeitamente. Aí então fui fazer um sistema de login num site teste que estou fazendo. Fiz o meu sistema praticamente igual ao script que peguei, mas surpreendentemente o meu não funciona (sendo que o outro funciona). Bom, se um funciona não pode ser problema de configuração do php certo? O erro que dá é o seguinte:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\apache\apache\htdocs\site\valida_not.php:13) in c:\apache\apache\htdocs\site\valida_not.php on line 41

Warning: session_register() [function.session-register]: Cannot send session cache limiter - headers already sent (output started at c:\apache\apache\htdocs\site\valida_not.php:13) in c:\apache\apache\htdocs\site\valida_not.php on line 43

Warning: Cannot modify header information - headers already sent by (output started at c:\apache\apache\htdocs\site\valida_not.php:13) in c:\apache\apache\htdocs\site\valida_not.php on line 45

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

03/06/2004 2:36pm (~17 anos atrás)

Quando se usa a variável $_SESSION o manual do PHP informa que session_register(), session_unset() e outras funções não funcionam... É (ainda não entendi direito, estou terminando de ler o artigo e meu "ingrei" é péssimo) algo relacionado ao escopo das variáveis (SUPERGLOBAL, AUTOGLOBAL, ETC.)...
10/02/2004 3:52pm (~17 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)