Utilizando sessões no PHP
Como utilizar?
<br>
Utilizar sessões é muito fácil, veja as funções:
<br>
session_start: inicia dados de uma sessão<br>
session_destroy: encerra a sessão, eliminando todos os dados registrados<br>
session_name: nome da sessão<br>
session_module_name: módulo da sessão<br>
session_save_path: localização da sessão<br>
session_id: identificação da sessão<br>
session_register: registrar uma ou mais variáveis na sessão<br>
session_unregister: eliminar uma variável da sessão<br>
session_unset: limpa todas as variáveis da sessão<br>
session_is_registered: verifica se a variável está registrada na sessão<br>
session_get_cookie_params: captura cookie com os parâmetros da sessão<br>
session_set_cookie_params: define cookie com os parâmetros da sessão<br>
session_decode: decodifica dados de uma string na sessão<br>
session_encode: codifica dados de uma string na sessão<br>
session_set_save_handler: define nível do usuário p/ funções de armazenamento<br>
session_cache_limiter: verifica ou define limite de cache para sessão<br>
session_write_close: escreve dados e finaliza sessão<br>
<br>
session_start
<br>
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");
<br>
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.
<br>
session_destroy
<br>
Comando utilizado para encerrar uma sessão existente.
<br>
<?
session_start(); // antes de destruir a sessão, é necessário iniciá-la.
session_destroy();
?>
<br>
Atenção! quando utilizar cookie, com o comando session_destroy os cookies não são eliminados.
<br>
session_name
<br>
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:
<br>
// primeiro arquivo
<?
// marcando o nome da sessão
$name = session_name("tuto_session");
echo $name.' é o nome da sua sessão!!!';
?>
<br>
// segundo arquivo
<?
// chamando a sessão pelo nome
session_name("tuto_session");
// startando a sessão
session_start();
?>
<br>
Utilizar sessões é muito fácil, veja as funções:
<br>
session_start: inicia dados de uma sessão<br>
session_destroy: encerra a sessão, eliminando todos os dados registrados<br>
session_name: nome da sessão<br>
session_module_name: módulo da sessão<br>
session_save_path: localização da sessão<br>
session_id: identificação da sessão<br>
session_register: registrar uma ou mais variáveis na sessão<br>
session_unregister: eliminar uma variável da sessão<br>
session_unset: limpa todas as variáveis da sessão<br>
session_is_registered: verifica se a variável está registrada na sessão<br>
session_get_cookie_params: captura cookie com os parâmetros da sessão<br>
session_set_cookie_params: define cookie com os parâmetros da sessão<br>
session_decode: decodifica dados de uma string na sessão<br>
session_encode: codifica dados de uma string na sessão<br>
session_set_save_handler: define nível do usuário p/ funções de armazenamento<br>
session_cache_limiter: verifica ou define limite de cache para sessão<br>
session_write_close: escreve dados e finaliza sessão<br>
<br>
session_start
<br>
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");
<br>
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.
<br>
session_destroy
<br>
Comando utilizado para encerrar uma sessão existente.
<br>
<?
session_start(); // antes de destruir a sessão, é necessário iniciá-la.
session_destroy();
?>
<br>
Atenção! quando utilizar cookie, com o comando session_destroy os cookies não são eliminados.
<br>
session_name
<br>
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:
<br>
// primeiro arquivo
<?
// marcando o nome da sessão
$name = session_name("tuto_session");
echo $name.' é o nome da sua sessão!!!';
?>
<br>
// segundo arquivo
<?
// chamando a sessão pelo nome
session_name("tuto_session");
// startando a sessão
session_start();
?>
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!
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
(~19 anos atrás)
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
(~19 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
session_cache_expire(20);
No caso acima defini para 20 minutos.
Fica na paz.
Renata
01/06/2005 9:38am
(~19 anos atrás)
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...
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
(~20 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
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
(~20 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..
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
(~20 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
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
(~20 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
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
(~20 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
(~21 anos atrás)
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... :(