Como listar e verificar um dado em todas as sessões abertas?

934 views
Skip to first unread message

tiago.pr...@gmail.com

unread,
Apr 23, 2009, 9:34:00 PM4/23/09
to GOPHP
E ai pessoal do GOPHP,
estou precisando saber se tem como eu realizar uma busca em todas as
sessões atuais abertas em uma determinada chave. Tenho uma situação em
que uma pessoa se loga e então é criado uma sessão para essa pessoa
com um ID único tipo $_SESSSION['cod_user']. Ai se uma outra pessoa
tentar logar com os dados deste usuário, este deverá ser barrado pois
uma sessão com este ['cod_user'] esta ativa, ou seja, após logar-se
verifica-se todas as sessões abertas, caso não exista sessão com este
['cod_user'] ativa então ela é criada senão o mesmo é barrado de
prosseguir no sistema. Desde já agradeço a todos.

Tiago Rocha Sarno.

Reinaldo Borges

unread,
Apr 23, 2009, 9:48:10 PM4/23/09
to go...@googlegroups.com
Você pode salvar a sessão no banco, e não no arquivo. Você pode salvar, além
dos dados da sessão, o id do usuário, para facilitar a localização.

Veja a função session_set_save_handler()

[]'s

Reinaldo Borges
Sent from Goiania, GO, Brazil

tiago.pr...@gmail.com

unread,
Apr 24, 2009, 6:51:53 AM4/24/09
to GOPHP
Olá Reinaldo blz,
pesquisei a função aqui no manual do php e na net mais não consegui
achar até o momento nenhum exemplo da utilização desta função com
verificação de uma determinada chave em todas as sessões em atividade.
Eu estou na verdade procurando alguma solução que não utilizasse banco
de dados devido o local onde estou utilizando este método. Tipo, na
aplicação, quando o usuário clicar no [x] do browser ele deve ser
liberado para acesso novamente. Atualmente, quando o usuário clica no
[x] do browser, eu atualizo um registro no banco de dados só que nem
sempre funciona, não é garantido, as vezes me parece que o tempo não
chega a permitir o acesso ao banco. Então pensei em usar um ID de
sessão e quando o cara clicar no [x] eu apenas do um session_destroy()
e mato a sessão, dando garantia ao sistema e novo acesso ao user.
Então o fluxo completo da aplicação seria:

Login -> Verificação das sessões em atividade -> Se identico a algum
ID na sessão barra -> Se válido cria sessão e passa -> Navegação na
aplicação -> Usuário clica no [x] do browser -> Execução de arquivo
que mata a sessão deixando este user apto a logar-se novamente.

Obrigado pela sua ajuda e estou aqui estudando a função, pesquisando.

Tiago.


On 23 abr, 22:48, Reinaldo Borges <reinaldobor...@gmail.com> wrote:
> Você pode salvar a sessão no banco, e não no arquivo. Você pode salvar, além
> dos dados da sessão, o id do usuário, para facilitar a localização.
>
> Veja a função *session_set_save_handler()*
>
> []'s
>
> Reinaldo Borges
> Sent from Goiania, GO, Brazil
>
> 2009/4/23 <tiago.programa...@gmail.com>
>
>
>
>
>
> > E ai pessoal do GOPHP,
> > estou precisando saber se tem como eu realizar uma busca em todas as
> > sessões atuais abertas em uma determinada chave. Tenho uma situação em
> > que uma pessoa se loga e então é criado uma sessão para essa pessoa
> > com um ID único tipo $_SESSSION['cod_user']. Ai se uma outra pessoa
> > tentar logar com os dados deste usuário, este deverá ser barrado pois
> > uma sessão com este ['cod_user'] esta ativa, ou seja, após logar-se
> > verifica-se todas as sessões abertas, caso não exista sessão com este
> > ['cod_user'] ativa então ela é criada senão o mesmo é barrado de
> > prosseguir no sistema. Desde já agradeço a todos.
>
> > Tiago Rocha Sarno.- Ocultar texto das mensagens anteriores -
>
> - Mostrar texto das mensagens anteriores -

Reinaldo Borges

unread,
Apr 24, 2009, 11:45:10 AM4/24/09
to go...@googlegroups.com
Boa tarde,

Quando você usa session_set_save_handler(), na verdade você vai substituir o funcionamento
padrão da sessão. O padrão é salvar os dados da sessão em um arquivo. Quando a sessão
expira, ou você a destrói, o arquivo é apagado.

Quando você usa session_set_save_handler(), sempre que uma sessão for iniciada, a sua
função será chamada. Sua função deve então criar ou restaurar a sessão, que pode estar
no banco de dados. Quando a sessão terminar, outra função sua também será chamada, e
ela deve então apagar do banco, ou marcar como inativa. Dessa forma, se o usuário não clicar
no [X] para encerrar a sessão, quando o tempo expirar o PHP vai acionar sua função para
matar a sessão.

Quando for salvar os dados da sessão no banco (em um campo TEXT ou BLOB, por exemplo),
salve um campo extra com o ID do usuário, para facilitar a localização.


[]'s

Reinaldo Borges
Sent from Goiania, GO, Brazil

Reply all
Reply to author
Forward
0 new messages