[Rio-pm] Como recuperar dados de uma sessão que já foi iniciada
Cleysinho
cleysinhonv em gmail.com
Sexta Abril 13 13:43:23 PDT 2012
Olá pessoal,
A forma que consi para fechar a sessão foi invalidado os cookies usando
$session->expire('-1m'); essa orientação me foi passada por um membro do
viva o linux, acho que ele participa da lista também.
Obrigado Ole Peter Smith na tentativa de me ajudar.
Solução:
my $cgi = new CGI;
my $session = new CGI::Session("driver:File",
undef,{Directory=>"/tmp"});
my $cookie = $cgi->cookie(CGISESSID => '0');
print $cgi->header(-cookie=>$cookie);
$session->expire('-1m');
$session->flush();
Em 10 de abril de 2012 15:15, Cleysinho <cleysinhonv em gmail.com> escreveu:
> Inicialmente esta com dúvidas em como gerenciar sessão. Confesso que as
> vezes que trabalhei com PHP achei um pouco mais fácil. Mas acabei tirando o
> feriado para estudar. Por hora consigo gerenciar bem a sessão a única coisa
> que não estou conseguindo fazer é fechar a sessão. Gostaria que alguém
> pudesse me orientar como posso fazer isso da forma correta. O criei um
> método para me auxiliar, porém ele continua com a sessão aberta.
>
> Estou usando esse método para fechar a sessão mas algo está errado
> sub DelSession
> {
> $cgi = new CGI;
> $session = new CGI::Session("driver:File", $cgi, {Directory=>"/tmp"});
> $session->delete();
> $cgi->delete();
> return 'Ok';
> }
>
>
> Aqui esta a classe que criei para tentar "abstrair"
> package ::Sessao;
>
> # Módulo responsável por fazer controle de sessão
> use CGI;
> use CGI::Session;
>
> # Método pata iniciar uma sessão
> sub StarSession
> {
> my $id =shift;
> my $name =shift;
> my $email=shift;
> my $level=shift;
>
>
> if(@_)
> {
> $id{id} =$_[0];
> $name{name} =$_[1];
> $email{email}=$_[2];
> $level{level}=$_[3];
> }
>
> $cgi = new CGI;
> $session = new CGI::Session("driver:File", undef, {Directory=>"/tmp"});
>
> # Send data in the Session
> $CGISESSID = $session->id();
>
> $cookie = $cgi->cookie(CGISESSID => $session->id);
> print $cgi->header(-cookie=>$cookie);
>
>
> $session->param(-name=>'iduser',-value=>"$id");
> $session->param(-name=>'name' ,-value=>"$name");
> $session->param(-name=>'email' ,-value=>"$email");
> $session->param(-name=>'level' ,-value=>"$level");
>
> $session->expire('+1m');
> $session->flush();
>
> return 'Ok';
> }
>
> # Abre uma sessão existente e coleta dados da sessão
> sub valid
> {
> $cgi = new CGI;
> $session = new CGI::Session("driver:File", $cgi, {Directory=>"/tmp"});
>
> if($session->param('iduser') ne '' && $session->param('name'))
> {
> @dados=();
>
> push (@dados,$session->param('iduser'));
> push (@dados,$session->param('name'));
> push (@dados,$session->param('email'));
> push (@dados,$session->param('level'));
> push (@dados,'Ok');
> return @dados;
> }
> else
> {
> @dados=();
> push (@dados,'False');
> return @dados;
> }
> }
>
> # Abre uma sessão existente e fecha
> sub DelSession
> {
> $cgi = new CGI;
> $session = new CGI::Session("driver:File", $cgi, {Directory=>"/tmp"});
> $session->delete();
> $cgi->delete();
> return 'Ok';
> }
> return 1
>
>
> 2012/3/31 Ole Peter Smith <ole.ufg em gmail.com>
>
>>
>>
>> 2012/3/30 Cleysinho <cleysinhonv em gmail.com>
>>
>>> Olá Randal,
>>>
>>> Bom tentei fazer dessa forma e com esse método ate funciona ele consegue
>>> recuperar os dados da sessão, mas não por muito tempo.
>>>
>>> Na verdade eu preciso inicialmente em cada arquivo preciso verificar se
>>> a sessão está vazia(is_empty) ou se ela não está expirada (is_expired),
>>> porém todas as veses ele está retornando como sessão vazia.
>>>
>>> Em cada arquivo que monta uma página eu preciso fazer o seguinte:
>>> if($session->is_expired)
>>> {
>>> $page->redirect(url=>gsm.pl)
>>> }
>>> elsif($session->is_empty)
>>> {
>>> $page->redirect(url=>gsm.pl)
>>>
>>> }
>>> else
>>> {
>>>
>>> Pegar os dados na sessão:
>>>
>>> push (@dados,$session->param('iduser'));
>>> push (@dados,$session->param('name'));
>>> push (@dados,$session->param('email'));
>>> push (@dados,$session->param('level'));
>>> }
>>> print $layout->menu();
>>>
>>> Obs.: Como pegar dados em uma sessão que está vazia?]
>>>
>>
>> Save it somewhere? Database, file, somewhere...
>>
>> 0le
>>
>>>
>>>
>>> Em 30 de março de 2012 14:37, Randal L. Schwartz <merlyn em stonehenge.com>escreveu:
>>>
>>> >>>>> "Cleysinho" == Cleysinho <cleysinhonv em gmail.com> writes:
>>>>
>>>> Cleysinho> if($session->param('iduser') ne '' &&
>>>> $session->param('name'))
>>>> Cleysinho> {
>>>> Cleysinho> @dados=();
>>>> Cleysinho> push (@dados,$session->param('iduser'));
>>>> Cleysinho> push (@dados,$session->param('name'));
>>>> Cleysinho> push (@dados,$session->param('email'));
>>>> Cleysinho> push (@dados,$session->param('level'));
>>>> Cleysinho> push (@dados,'Ok');
>>>> Cleysinho> return @dados;
>>>>
>>>> return map($session->param($_), qw(iduser name email
>>>> level)), 'Ok';
>>>>
>>>> Cleysinho> }
>>>> Cleysinho> else
>>>> Cleysinho> {
>>>> Cleysinho> @dados=();
>>>> Cleysinho> push (@dados,'False');
>>>> Cleysinho> return @dados;
>>>>
>>>> return 'False';
>>>>
>>>> Cleysinho> }
>>>> Cleysinho> }
>>>>
>>>>
>>>> --
>>>> Randal L. Schwartz - Stonehenge Consulting Services, Inc. - +1 503 777
>>>> 0095
>>>> <merlyn em stonehenge.com> <URL:http://www.stonehenge.com/merlyn/>
>>>> Smalltalk/Perl/Unix consulting, Technical writing, Comedy, etc. etc.
>>>> See http://methodsandmessages.posterous.com/ for Smalltalk discussion
>>>>
>>>
>>>
>>>
>>> --
>>> **
>>> .: Inteligência Coletiva :.
>>> Uma inteligência distribuída por toda parte: tal é o nosso axioma
>>> inicial. Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na
>>> humanidade’. (Pierre Lévy)
>>> www.bioinfopop.ufv.br
>>>
>>>
>>> _______________________________________________
>>> Rio-pm mailing list
>>> Rio-pm em pm.org
>>> http://mail.pm.org/mailman/listinfo/rio-pm
>>>
>>
>>
>>
>> --
>> /////
>> ( O O )
>> =================oOO==(_)==OOo=================
>> Every day and every hour, I'm Learning more
>> The more I Learn, the less I Know about before
>> The Less I know, the more I want to Look around
>> Diggin' deeper into Higher Ground... UB40
>> .oooO Oooo.
>> ==================( )=( )=====================
>> \ ( ) /
>> \_) (_/
>> ===============================================
>> Ole Peter Smith, IME, UFG
>> http://www.mat.ufg.br/docentes/olepeter - ole at mat.ufg.br
>> ===============================================
>> Life sure is a Mystery to be Lived
>> Not a Problem to be Solved
>> ===============================================
>>
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
>
>
> --
> **
> .: Inteligência Coletiva :.
> Uma inteligência distribuída por toda parte: tal é o nosso axioma inicial.
> Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na
> humanidade’. (Pierre Lévy)
> www.bioinfopop.ufv.br
>
>
--
**
.: Inteligência Coletiva :.
Uma inteligência distribuída por toda parte: tal é o nosso axioma inicial.
Ninguém sabe tudo, todos sabem alguma coisa, todo o saber está na
humanidade’. (Pierre Lévy)
www.bioinfopop.ufv.br
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120413/3175d340/attachment.html>
Mais detalhes sobre a lista de discussão Rio-pm