Passando, com segurança, a ID de um sessão no modo transparente
      Para contornar este problema, podemos inserir o seguinte código em todas as páginas onde usaremos variáveis de sessão:
O código acima inicia uma sessão. Se houver o parâmetro PHPSESSID (na URL ou em cookies) com uma ID de sessão válido como valor, a sessão atual será resumida.
É usada uma variável $sessiontime para controlar o período de validade da sessão. Assim, mesmo que um internauta use um endereço do bookmark com a ID da sessão na URL, o script verifica se $sessiontime é menor do que a hora atual menos $temposessao. Se for menor, a sessão não é mais válida e todas as variáveis da sessão são liberadas.
DICA: você pode colocar o código de validação de sessão em um arquivo separado e fazer um include() nas páginas necessárias.
NOTA: o código também valida uma ID de sessão que esteja armazenada em cookies.
Daniel Braga de Almeida
http://comentar.com.br
  
    <?php
$temposessao = 1200; // valor em segundos
// inicia a sessão
session_start();
// verifica se há a variável "sessiontime"
if ($_SESSION["sessiontime"]) {
    // se há "sessiontime", verifica se ainda é válida
    if ($_SESSION["sessiontime"] < (time() - $temposessao)) {
        // se não for válida, libera todas as variáveis da sessão
        session_unset();
    }
} else {
    // se não há a variável "sessiontime", 
    // libera todas as variáveis da sessão
    session_unset();
}
// session time recebe um novo valor
$_SESSION["sessiontime"] = time();
// agora sua sessão está pronta para receber novas variáveis
?>
O código acima inicia uma sessão. Se houver o parâmetro PHPSESSID (na URL ou em cookies) com uma ID de sessão válido como valor, a sessão atual será resumida.
É usada uma variável $sessiontime para controlar o período de validade da sessão. Assim, mesmo que um internauta use um endereço do bookmark com a ID da sessão na URL, o script verifica se $sessiontime é menor do que a hora atual menos $temposessao. Se for menor, a sessão não é mais válida e todas as variáveis da sessão são liberadas.
DICA: você pode colocar o código de validação de sessão em um arquivo separado e fazer um include() nas páginas necessárias.
NOTA: o código também valida uma ID de sessão que esteja armazenada em cookies.
Daniel Braga de Almeida
http://comentar.com.br
    Páginas:
                  1
                        2
            
    
  
    
                  Vocês acham que é possível apagar o id da sessão mesmo depois de um session_destroy()?
              
      
        29/07/2005 10:48am
        (~20 anos atrás)
      
    
                  Fiquei satisfeito com a solução apresentada no artigo, supriu minhas necessidades. 
valeu
      valeu
        11/05/2004 12:15pm
        (~21 anos atrás)
      
    
                  Se você der unset ou destroy será quase a mesma coisa, mas com destroy vc terá que chamar session_start() novamente, sendo que nas duas situações a sessão continuará com a mesma ID e a sessão estará vazia
O propósito do código é exatamente este: se a sessão expirou, a aplicação deverá ter novos valores nas variáveis e que sejam válidos e seguros.
      O propósito do código é exatamente este: se a sessão expirou, a aplicação deverá ter novos valores nas variáveis e que sejam válidos e seguros.
        30/04/2004 7:43am
        (~21 anos atrás)
      
    
                  OK Daniel,
Eu entendi, vamos supoter que o cara está navegando na minha sessão, fechou o browser, sendo assim não ativou o session_destroy, e o arquivo ficou no servidor.
Vamos supor que outro dia ele volter e use o session ID que estava na URL, ae o SEU código vai ver que o TIME expirou, ae nesse ponto, vc limpa as variaveis com o session_unset, mas ai todas as variaveis foram para o espaco e eu preciso delas pra continuar a aplicação, ou seja, vou ter que mandar o cara ir para o login, já não é melhor eu dar session_destroy???
Abraços,
Max
      Eu entendi, vamos supoter que o cara está navegando na minha sessão, fechou o browser, sendo assim não ativou o session_destroy, e o arquivo ficou no servidor.
Vamos supor que outro dia ele volter e use o session ID que estava na URL, ae o SEU código vai ver que o TIME expirou, ae nesse ponto, vc limpa as variaveis com o session_unset, mas ai todas as variaveis foram para o espaco e eu preciso delas pra continuar a aplicação, ou seja, vou ter que mandar o cara ir para o login, já não é melhor eu dar session_destroy???
Abraços,
Max
        29/04/2004 10:16pm
        (~21 anos atrás)
      
    
                  Estou com um problema grave.
No meu site ao usuário cadastrar-se é enviado um email para confirmação de registro, até ai tudo bem. Porém descobri que se este email for do hotmail e o navegador for Explorer e ele clicar no link pelo servidor hotmail minha página vai abrir como um frame, e consequentemente o Explorer não vai aceitar cookies.
Tudo bem a solução seria passar o id da seção via URL, mas como meu sistema é enorme fica impossivel fcar caçando todos os links.
Existe algum meio de eu passar o ID da seção via URL por meio de uma função ou algo assim, e que isso se propague para todos os links???
      No meu site ao usuário cadastrar-se é enviado um email para confirmação de registro, até ai tudo bem. Porém descobri que se este email for do hotmail e o navegador for Explorer e ele clicar no link pelo servidor hotmail minha página vai abrir como um frame, e consequentemente o Explorer não vai aceitar cookies.
Tudo bem a solução seria passar o id da seção via URL, mas como meu sistema é enorme fica impossivel fcar caçando todos os links.
Existe algum meio de eu passar o ID da seção via URL por meio de uma função ou algo assim, e que isso se propague para todos os links???
        21/03/2004 3:53pm
        (~21 anos atrás)
      
    
                  Não. O ponto que quis abordar não era bem esse... Visei a relação Cookie x Sessions, que pelos que testes que efetuei aqui, não apresentaram relações. Pelo que entendi do seu artigo, sem Cookies, Sessions não funcionam...
Desculpe-me se interpretei de maneira errônea seu artigo.
      Desculpe-me se interpretei de maneira errônea seu artigo.
        17/03/2004 11:23am
        (~21 anos atrás)
      
    
                  Acessei as páginas administrativas que já tenho prontas. Excelente. Salvei a URL nos Favoritos e desabilitei os cookies. Reiniciei o navegador e tentei acessar... Acesso Negado, como já se esperava... Então... Fiz login e a session foi criada normalmente... =)
Testei no IE6 e Firefox... Ambos não apresentaram erros, nem efeitos inesperados...
      Testei no IE6 e Firefox... Ambos não apresentaram erros, nem efeitos inesperados...
        16/03/2004 3:11pm
        (~21 anos atrás)
      
    
                  oi gente..to usando esse codigo q o daniel mandou ai pra gente..numa include...
na pagina q verifica o login...dou um echo na variavel de sessao q criei para o login e ele me mostra o login correto...
nessa mesma pagina..chamo uma funcao q ta em outra engina pra atualizar os dados do cara...e dou, dentro da funcao um outro echo na variavel de sessao do login e me mostra corretamente de nvo...
depois ainda na pagina que verifica o login...eu chamo a funcao url("home.php");
essa funcao nada mais é q um location.href em java script q eu fiz...
na pagina home.php eu dou um terceiro echo na variavel de sessao do loginname
ai ja aparece diferente...
meu login é girakrok..e aparece intranet...
alguem sabe pq isso acontece?
antes de cada echo eu to colocando a include com esse codigo da sessao...
[]´s
      na pagina q verifica o login...dou um echo na variavel de sessao q criei para o login e ele me mostra o login correto...
nessa mesma pagina..chamo uma funcao q ta em outra engina pra atualizar os dados do cara...e dou, dentro da funcao um outro echo na variavel de sessao do login e me mostra corretamente de nvo...
depois ainda na pagina que verifica o login...eu chamo a funcao url("home.php");
essa funcao nada mais é q um location.href em java script q eu fiz...
na pagina home.php eu dou um terceiro echo na variavel de sessao do loginname
ai ja aparece diferente...
meu login é girakrok..e aparece intranet...
alguem sabe pq isso acontece?
antes de cada echo eu to colocando a include com esse codigo da sessao...
[]´s
        15/03/2004 8:38am
        (~21 anos atrás)
      
    
                  Bem eu nao uso Cookie.. somente Session
os unicos Dados eu que deveria armazenar em cookie seria o Idioma escolhido para o usuario, porem este estou armazenando na tabela de usuarios.
Os Sistemas que faço sao para empresas, nao um Forum.. e nao armazeno usuario e senha, para outra pessoa nao utilizar o nome de outro.
Mas normal.. é só verificar se esta ativo ou nao... e bola pra frente..
              
      os unicos Dados eu que deveria armazenar em cookie seria o Idioma escolhido para o usuario, porem este estou armazenando na tabela de usuarios.
Os Sistemas que faço sao para empresas, nao um Forum.. e nao armazeno usuario e senha, para outra pessoa nao utilizar o nome de outro.
Mas normal.. é só verificar se esta ativo ou nao... e bola pra frente..
        14/03/2004 5:37pm
        (~21 anos atrás)
      
    
