Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LeonardoDesigner

Problemas com session()

Recommended Posts

Olá estou com um grande problema!

Estou desenvolvendo um sistema intranet para uma igreja...

Tenho um sistema central que está no link: http://lirios/slv

Para não ficar utilizando ?id=3 eu passei esses gets de id tudo por session()

Então ao invés de acessar por exemplo http://lirios/slv/editar.php?id=5

Acessamos apenas http://lirios/slv/editar.php e o id passo pela session()

Por isso fica cheio de session's no sistema, mas até ai não tem problema...
Mas eu quero que quando a pessoa deslogar do sistema, todas as session's sejam encerradas...

Eu estava utilizando a função session_destroy();

E ai estava encerrando todas e boa!!!!

Mas é AI que está o problema, ele encerra realmente todas!

Tenho um outro diretório dentro do localhost que seria o lirios/sicon

Que já é outro sistema! Quando eu deslogo do sistema lirios/slv

Ele destrói as session's do lirios/sicon também, deslogando de la!

Como posso resolver isso? Tem alguma função ou alguma forma que eu consiga destruir todas as session's apenas de um diretório?

Apenas de um sistema?

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

Eis o problema!!! Meu sistema envolve muitas session's

E no logout, eu preciso destruir todas essas session's e não tem como eu descobrir qual session esta ativa ou não para utilizar a função unset(); !!

Eu pensei em algo só que é muito trabalhoso, isso seria como ultima opção caso eu não conseguir nada que é utilizar subsessions para cada sistema por exemplo:

SISTEMA SICON = $_SESSION['sicon']['login']; e todas as outras session deste sistema, utilizar essa inicial, ai no logout eu apenas uso unset($_SESSION['sicon']);

Mas já tem muita coisa criada, eu teria que revisar arquivo por arquivo para fazer esta atualização, bem trabalhoso!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui ter uma ideia melhor de como utilizar o array(); mas ainda estou com algumas dificuldades...

Na teoria seria algo tipo, selecionar todas as session's em um array e depois excluir as session's que não podem

ser apagadas, e ai fazer o unset(); neste array(); que não excluiria as session's que não podem ser excluídas né?

Por exemplo:

$sessions   = array($_SESSION);
$nao_apagar = array('sicon','sipag','sigal');

Mas agora minha duvida, como eu posso apagar os array da variavel $nao_apagar da $sessions ?

E depois como eu daria unset nessas sessions?

unset($_SESSION[$sessions]); Seria isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cansei de pensar e perder tempo com isso, já perdi 3 horas de programação pensando nessa m*****!!

Criei uma tabela e cadastrei todas as session's que tinham que ser destruídas ao deslogar,

e agora no logout eu seleciono primeiro a tabela e aplico o unset() apenas nos dados registrados na tabela!

OBRIGADO pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara é assim mesmo $_SESSION recebe array vazio ao invés de tentar limpar a sessão, você já está limpando e declarando que $_SESSION recebe nada $_SESSION = array();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tipo de bagunça você quer criar no seu sistema?

Query string, tanto get como post (sim, post é um tipo de query string também), possuem suas definições e locais/momentos. A $_SESSION não é o lugar ideal para isso.

Uma transação GET tem como definição retornar algo de um storage, mas "retornar o que" se você não está passando nada como parâmetro?

Agora ao ponto da sua dúvida, eu não indico realizar da forma que você está fazendo, então não considere a resposta abaixo como solução do seu problema. Entretanto, saber como separar sessions é sempre útil.

Por default, o PHP cria uma session por navegador. Não importa qual diretório/sistema esteja acessando. Se estiver no mesmo servidor/domínio, é a mesma sessão.

Entretanto, você pode separar sessões de sistemas que ficam no mesmo servidor, basta dar "nomes aos bois". Ou seja, atribuir um nome para ela.
session_name e session_id. Entretanto, session_name parece ser o suficente.

Outra solução é mudar o caminho aonde salva a sessão:
session_save_path

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Negrito
      Olá,
       
      Estou quebrando a cabeça com o recurso Session_OnStart , pois eu gostaria que algumas paginas/arquivos .asp tivessem exceções.
       
      Criei o Global.ASA com o seguinte contexto:
       
      <SCRIPT RUNAT=Server Language="VBScript">
      Sub Session_OnStart
        startPage = "/default.asp"
        currentPage = Request.ServerVariables("SCRIPT_NAME")
        If strcomp(currentPage,startPage,1) then
          Response.Redirect("/default.asp")
        End If
      End Sub
      </SCRIPT>
       
      Ele funciona perfeitamente, quando tento acessar qualquer pagina ou subdiretorio diretamente pela URL, ele me joga para a pagina inicial.
       
      Porem, eu gostaria de ter exceções em alguns diretorios e paginas .ASP , onde eu gostaria de liberar o acesso direto ao digitar a URL.
       
      Alguem sabe me informar se é possivel ? 
       
      Obrigado.
       
       
    • Por k9studio
      Olá meus Amigos,
       
      Estou tendo dificuldades em eliminar dados repetidos de uma session
      é um sisteminha de pesquisa de domínios com array
      quero eliminar quando já tiver um nome na session, não deixar gravar outro
      aguem pode ajudar
      veja como está  
      Array ( [0] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [1] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [2] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) [3] => Array ( [type] => register [domain] => testeteste.com.br [regperiod] => 1 ) [4] => Array ( [type] => register [domain] => testeteste.com [regperiod] => 1 ) [5] => Array ( [type] => register [domain] => testeteste.net.br [regperiod] => 1 ) ) Desde já muito obrigado a todos
    • Por Alberto Nascimento
      Estou tendo problemas de acesso ao Session, onde quando realizo login via computador, consigo "pegar" os dados que foram armazenados na sesion, mas quando utilizo o sistema de login no telefone ( android, por exemplo ) a session não esta conseguindo carregar os dados do usuário logado e exibir na página seguinte.
       
      Outra coisa que observei é que não consigo trabalhar com session em pastas diferentes, isso é normal? Veja só:
       
       
      Utilizando esta estrutura, não consigo ter acesso ao session no sistema ANDROID
       
      Agora se ao invés de ser como esta acima, faço uma pasta com todos os arquivos juntos, já consigo "pegar" os dados da session. Isso é normal?
    • Por tony_lu
      Ola pessoal, tenho uma hospedagem de php na hostgator e estou tentando rodar uma rotina com session e esta dando erro, na pagina só tem este código:
       
      <?php  session_start();  ?> E esta dando este erro:
      Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home2/sitewww/public_html/carrinho.php:1) in /home2/sitewww/public_html/carrinho.php on line 2
       
      Alguem pode me ajudar?
    • Por Evandrorussi
      Olá pessoal,
       
      Trabalho com PHP a uns 6 anos e me deparei com um problema de session que nunca ouvi falar, pelo menos não encontrei nada pela internet desse tipo. Tenho um servidor dedicado no Google Cloud e o site tem um sistema de login via session. O problema é que a session funciona aleatoriamente, tem hora que não funciona, o cliente troca de tela e o servidor perde a session e pede pra logar novamente, isso não acontece com todos usuários, comigo por exemplo não acontece.
      O cara que trabalha comigo não ocorria esse problema mas agora começou a acontecer e ele reparou que com guia anônima o problema não ocorre.
       
      Caso alguém pergunte, session_start() está iniciando em todas as páginas.
       
      Abraço
       
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.