Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
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!!
Bom, acho que se fizer algo do gênero vai resolver
$_SESSION = array();
Desculpe, poderia dar um exemplo melhor de como usaria $_SESSION = array(); ?
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?
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!
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();
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
Bom dia.. Eu faço meu logout assim...