[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