Olá! Wednesday, 22 de February de 2017.



Dicas CódigoFonte.net
Friday, 23 de January de 2004

HTTP Cookies em CGI / Perl

Opa pessoal,

Hoje irei ensinar como gravar cookies em seus scripts CGI/Perl.

Há duas maneiras:

1 - Com o módulo CGI:

  1.  #!/usr/bin/perl
  2.  
  3. use CGI; #chamo o módulo CGI
  4. use CGI::Cookie; #dentro dele, chamo o módulo do cookie
  5.  
  6. $cgi = new CGI;
  7.  
  8. if ($cgi->cookie('meu_cookie')) { #caso o cookie exista, imprimo
  9.  
  10. print "Content-type: text/html"; #tipo de documento: HTML
  11. print "Cookie ativo!
  12. ";
  13. print $cgi-cookie('meu_cookie'); #meu cookie
  14.  
  15. } else { #se não existe, ele grava
  16.  
  17. $cookie = $cgi->cookie( -name=>'meu_cookie', -value=>"Estou gravado!", -expires=>"+2m"); #gravando o cookie chamado de 'meu_cookie' com o valor de 'Estou gravado' e expirando em 2 minutos.
  18. print $cgi->header( -cookie=>$cookie ); #imprimo o cookie no navegador
  19. print "Gravando cookie.... ok, salvo!
  20. Atualize seu navegador";
  21.  
  22. } #fecho o else  


Opções:

  1.  -domain => '.codigofonte.net'  
- significa que o cookie só funcionará com o domínio codigofonte.net.

  1.  -path => '/cgi-bin/scripts'  
- aqui, você colocará o path para o script que irá utilizar este cookie, neste caso, apenas scripts que estão no dir
  1.  /cgi-bin/scripts  
poderão utilizar.

  1.  -secure => '1'  
- 1 retorna valor verdadeiro para o navegador, e assim, o cookie só será carregado caso um protocolo criptografado esteja em uso.

2 - Sem utilizar módulo.

Uma outra maneira, não muito recomendada, é a não utilização de módulos.

  1.   #!/usr/bin/perl
  2.  
  3. foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
  4. $_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  5. ($nome,$valor) = split(/=/); $COOKIE{$nome} = $valor;
  6. }
  7.  
  8. if ($COOKIE{'meu_biscoito'}) { #caso o cookie exista, imprimo
  9.  
  10. print "Content-type: text/html"; #tipo de documento: HTML
  11. print "Cookie (biscoito) ativo!
  12. ";
  13. print "$COOKIE{'meu_biscoito'}"; #meu cookie
  14.  
  15. } else { #se não existe, ele grava
  16.  
  17. print "Set-Cookie: meu_biscoito=ESTOU GRAVADO VIU?!; expires=+2m ;";
  18. print "Content-type: text/html"; #tipo de documento: HTML
  19. print "Gravando cookie.... ok, salvo!
  20. Atualize seu navegador";
  21.  
  22. } #fecho o else
  23.  
  24.  


Além das opções padrões (
  1.  name, value, expires  
), ainda contamos com os seguintes parâmetros:

  1.  domain = '.codigofonte.net'  
- significa que o cookie só funcionará com o domínio codigofonte.net.

  1.  path = '/cgi-bin/scripts'  
- aqui, você colocará o path para o script que irá utilizar este cookie, neste caso, apenas scripts que estão no dir
  1.  /cgi-bin/scripts  
poderão utilizar.

  1.  secure = '1'  
- 1 retorna valor verdadeiro para o navegador, e assim, o cookie só será carregado caso um protocolo criptografado esteja em uso.

Não esqueça de separar com vírgulas ou ponto-vírgulas os atributos que você utilizar, exemplo:

1.
  1.  $cookie = $cgi->cookie( -name=>'meu_cookie', -value=>"Estou gravado!", -domain => '.codigofonte.net', -expires=>"+2m");
  2.  
  3. 2. [cf] print "Set-Cookie: meu_biscoito=ESTOU GRAVADO VIU?!; domain = '.codigofonte.net'; expires=+2m ;";


Para o tempo que o cookie irá existir, você poderá especificar utilizando os códigos a seguir:

s - segundo
m - minuto
h - hora
w - semana
M - mês
y - ano
now - agora


Sendo
  1. +1m </i> [cf] para o cookie expirar daqui a 1 minuto. Caso queria que o cookie expire agora, utilize o código [cf]now  </i>
.

Dúvidas, acesse nosso fórum: Fórum CGI/Perl

Até mais.

Comentários do artigo [Novo comentário]

Lukas Wilkeer Dias dos Santos - 06 de December de 2008 - 20:08
Emmanuel, muito obrigado por ter postado este artigo, etava doido para saber como posso deixar cookies no pc. Você não tem a idéia de quanto fico agradecido.
Valeu!!!
Para adicionar um comentário você deve efetuar o login


Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:


CodigoFonte.net » CodigoFonte.eti.br » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010