Introdução a Sessions
As sessões funcionam da seguinte maneira - quando você loga no sistema (usuário e senha) você valida esse usuário verificando no banco de dados se ele existe ou não e validando os seus dados. Para fazer isso você acaba utilizando uma ou outra estrutura de controle e/ou de repetição e depois mostra aquela mensagem "Seja bem-vindo Fulano" e vai aproveitar para iniciar a sessão.
Era ai que eu queria chegar, muitas pessoas não entendem como ou quando iniciar uma sessão, o mais importande do que o "como" é o "quando" isso desse ser feito. A partir do momento que o seu programa se encontrar em um status em que você já fez todas as verificações necessárias e a partir deste momento o usuário já esta devidamente identificado (Estou falando dessa maneira porque estou voltado ao assunto de logon de logout, entrada e saída de usuário.).
Definido isto agora vamos para o conceito de como fazer, tudo começa com o session_start(), esta função do PHP cria uma nova sessão. Isto quer dizer que a partir deste momento o seu programa esta apto a registrar os dados da sessão (nome, outras variáveis da sessão, tamanho do cache, etc). Como não queremos complicar vamos nos manter somente nas variáveis da sessão.
O que veremos agora ?
Vamos aprender a registrar, desregistrar e destruir as variáveis da sessão. Para criar (registrar) uma variável de sessão utiliza-se a função session_resgister() mas antes disso deve-se criar uma variável normal no PHP e atribuí-la um valor. Veja abaixo:
Feito isso você pode acessar a variável $Cod_Usuario de qualquer outro documento. Como fazer isso ?
Para isso utiliza-se a variável automática $HTTP_SESSION_VARS[], que é similar à $HTTP_POST_VARS[] e $HTTP_GET_VARS[], e funciona da mesma forma.
Uma outra coisa importante e muito útil é como saber se uma variável esta registrada ou não dentro de uma sessão. Veja abaixo como:
Isso serve para que você não acesse um determinado arquivo antes de você passar pelo arquivo que registra a sessão, ou seja, você não vai poder acessar um arquivo (ou página) pelo seu caminho real dentro do servidor de web, por exemplo : "www.toscano.com.br/gerenciamento.php" sem antes passar pelo "www.toscano.com.br/login.php".
Entenderam ?
Você nao consegue acessar um arquivo antes que você esteja dentro da sessão, por isso você é obrigado a passar antes pelo login.
Bom feito isso só nos sobra desfazer a sessão utilizando o session_destroy() que destrói todos os dados de uma sessão ou o session_unregister() para desregistar uma variável de uma determinada sessão.
Bom é isso ai, eu não sou o dono da verdade nem tenho esta pretensão, portanto se encontrar alguma coisa errada ou que possa ser feita de uma maneira melhor, faça seu comentário abaixo.
[]'s
Marcelo Toscano
http://www.toscano.com.br
Era ai que eu queria chegar, muitas pessoas não entendem como ou quando iniciar uma sessão, o mais importande do que o "como" é o "quando" isso desse ser feito. A partir do momento que o seu programa se encontrar em um status em que você já fez todas as verificações necessárias e a partir deste momento o usuário já esta devidamente identificado (Estou falando dessa maneira porque estou voltado ao assunto de logon de logout, entrada e saída de usuário.).
Definido isto agora vamos para o conceito de como fazer, tudo começa com o session_start(), esta função do PHP cria uma nova sessão. Isto quer dizer que a partir deste momento o seu programa esta apto a registrar os dados da sessão (nome, outras variáveis da sessão, tamanho do cache, etc). Como não queremos complicar vamos nos manter somente nas variáveis da sessão.
O que veremos agora ?
Vamos aprender a registrar, desregistrar e destruir as variáveis da sessão. Para criar (registrar) uma variável de sessão utiliza-se a função session_resgister() mas antes disso deve-se criar uma variável normal no PHP e atribuí-la um valor. Veja abaixo:
<?php $Cod_Ususario = "1234"; session_start(); // somente o 'nome' da variável, não a variável em si abaixo session_register('Cod_Usuario'); ?>
Feito isso você pode acessar a variável $Cod_Usuario de qualquer outro documento. Como fazer isso ?
Para isso utiliza-se a variável automática $HTTP_SESSION_VARS[], que é similar à $HTTP_POST_VARS[] e $HTTP_GET_VARS[], e funciona da mesma forma.
Uma outra coisa importante e muito útil é como saber se uma variável esta registrada ou não dentro de uma sessão. Veja abaixo como:
<?php if (isset($HTTP_SESSION_VARS["Cod_Usuario"])) { echo "mostra tudo"; } else { header("location: www.toscano.com.br"); //redireciona para o meu site heheh :P } ?>
Isso serve para que você não acesse um determinado arquivo antes de você passar pelo arquivo que registra a sessão, ou seja, você não vai poder acessar um arquivo (ou página) pelo seu caminho real dentro do servidor de web, por exemplo : "www.toscano.com.br/gerenciamento.php" sem antes passar pelo "www.toscano.com.br/login.php".
Entenderam ?
Você nao consegue acessar um arquivo antes que você esteja dentro da sessão, por isso você é obrigado a passar antes pelo login.
Bom feito isso só nos sobra desfazer a sessão utilizando o session_destroy() que destrói todos os dados de uma sessão ou o session_unregister() para desregistar uma variável de uma determinada sessão.
Bom é isso ai, eu não sou o dono da verdade nem tenho esta pretensão, portanto se encontrar alguma coisa errada ou que possa ser feita de uma maneira melhor, faça seu comentário abaixo.
[]'s
Marcelo Toscano
http://www.toscano.com.br
O erro estava lá no servidor, na configuração do php.ini e já foi solucionado.
21/07/2006 5:51am
(~18 anos atrás)
Pessoal ...eu não consigo sequer iniciar a sessão. Vejam quando executo session_start() ( ele entre outro erros) apresenta a seguinte linha:
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\Program Files\php\sessiondata) in Unknown on line 0
Por favor, esclareçam este erro. Eu tenho que colocar o php.ini no meu diretório, lá no servidor?
Ajudaria se configurassem passo a passo.
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (C:\Program Files\php\sessiondata) in Unknown on line 0
Por favor, esclareçam este erro. Eu tenho que colocar o php.ini no meu diretório, lá no servidor?
Ajudaria se configurassem passo a passo.
19/07/2006 7:08am
(~18 anos atrás)
cara... usei o código acima pra fechar a minha sessão mas não desgrava a sessão existente nem a pau!
Se eu volto pra página de login, sem fechar a janela, e faço o login com outro usuário, a sessão continua gravada com o usuário anterior!
Oq tenho q fazer????? HELP!!!
Se eu volto pra página de login, sem fechar a janela, e faço o login com outro usuário, a sessão continua gravada com o usuário anterior!
Oq tenho q fazer????? HELP!!!
19/07/2006 3:44am
(~18 anos atrás)
Crie um arquivo php com estas descrições e faça um link direcionado a ele...
<?
session_destroy();
echo "<META HTTP-EQUIV=REFRESH CONTENT=\"0;
URL=index.php\">";
?>
<?
session_destroy();
echo "<META HTTP-EQUIV=REFRESH CONTENT=\"0;
URL=index.php\">";
?>
17/11/2005 10:01am
(~19 anos atrás)
Como faço para q o php de um reset na sessão. quero fazer com q ele de um reset na sessão onde estão armazenadas os dados do login. para q faça um logout e retorne para a pagina de login. qual eh o comando para zerar a sessão.
21/10/2005 6:51pm
(~19 anos atrás)
A sessao esta funcionando corretamente como eu faço para ver todas as sessoes abertas e listar todos os usuarios logado.
Quando eu gravo a senha no MySql uso a seguinte forma usuario, senha vaules ('$usuario', 'password('$pass')');.... legal cadastra a senha codificada no BD, mas na hora de recuperar a senha, para um usuario que esqueceu, ela esta voltando codificada...
Como faço?
Quando eu gravo a senha no MySql uso a seguinte forma usuario, senha vaules ('$usuario', 'password('$pass')');.... legal cadastra a senha codificada no BD, mas na hora de recuperar a senha, para um usuario que esqueceu, ela esta voltando codificada...
Como faço?
09/08/2004 5:29pm
(~20 anos atrás)
Aprendi como alterar (valendo para o meu script):
Quer mudar o nome PHPSESSID:
ini_set("session.name","Usuario");
O estranho é que vem o cookie com o nome novo e o antigo PHPSESSID também ???
Ver:
http://www.php.net/manual/pt_BR/function.ini-set.php
Abraços
Quer mudar o nome PHPSESSID:
ini_set("session.name","Usuario");
O estranho é que vem o cookie com o nome novo e o antigo PHPSESSID também ???
Ver:
http://www.php.net/manual/pt_BR/function.ini-set.php
Abraços
14/01/2003 7:23am
(~22 anos atrás)
Tava desenvolvendo Sessions com a abstração da adodb que tem modulo para sessions, mas tinha que mudar no php.ini de files para user (session.save_handler) e aí não deu, não tenho controle sobre o server.
Queria fugir da autenticação pelo browser, que funciona bem = $PHP_AUTH_USER e $PHP_AUTH_PW, no servidor, para uma tela própria, mas a página para a qual redireciono fica estranha, hora acessa e hora não. Acho que o sid não está habilitado no server.
Alguém pode dar uma luz porque isso ocorre?
Não testei com a PHPLIB porque não sei se precisaria alterar coisas no server que não tenho controle.
Queria fugir da autenticação pelo browser, que funciona bem = $PHP_AUTH_USER e $PHP_AUTH_PW, no servidor, para uma tela própria, mas a página para a qual redireciono fica estranha, hora acessa e hora não. Acho que o sid não está habilitado no server.
Alguém pode dar uma luz porque isso ocorre?
Não testei com a PHPLIB porque não sei se precisaria alterar coisas no server que não tenho controle.
13/01/2003 11:30pm
(~22 anos atrás)
Não existe a pasta tmp em seu computador.Ou cria ela ou modifica ela no php.ini ,setando para uma pasta existente no seu computador.
10/01/2003 9:54pm
(~22 anos atrás)
Véi, vc tah registrando a variável denovo, na segunda página. Quando vc faz isso a variávl zera, mas tah registrada. Na segunda página não registre a variável, pois ela vai estar na sessão, bota feh?
16/08/2002 12:00pm
(~22 anos atrás)