Procurar
Palavras-chaves
Últimos assuntos
Tópicos mais visitados
HTTP Cookies em CGI / Perl
Página 1 de 1
HTTP Cookies em CGI / Perl
1 - Com o módulo CGI:
#!/usr/bin/perl
use CGI; #chamo o módulo CGI
use CGI::Cookie; #dentro dele, chamo o módulo do cookie
$cgi = new CGI;
if ($cgi->cookie('meu_cookie')) { #caso o cookie exista, imprimo
print "Content-type: text/html"; #tipo de documento: HTML
print "Cookie ativo!
";
print $cgi-cookie('meu_cookie'); #meu cookie
} else { #se não existe, ele grava
$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.
print $cgi->header( -cookie=>$cookie ); #imprimo o cookie no navegador
print "Gravando cookie.... ok, salvo!
Atualize seu navegador";
} #fecho o else
Opções:
-domain => '.codigofonte.net'
- significa que o cookie só funcionará com o domínio codigofonte.net.
-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
/cgi-bin/scripts
poderão utilizar.
-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.
#!/usr/bin/perl
foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
$_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
($nome,$valor) = split(/=/); $COOKIE{$nome} = $valor;
}
if ($COOKIE{'meu_biscoito'}) { #caso o cookie exista, imprimo
print "Content-type: text/html"; #tipo de documento: HTML
print "Cookie (biscoito) ativo!
";
print "$COOKIE{'meu_biscoito'}"; #meu cookie
} else { #se não existe, ele grava
print "Set-Cookie: meu_biscoito=ESTOU GRAVADO VIU?!; expires=+2m ;";
print "Content-type: text/html"; #tipo de documento: HTML
print "Gravando cookie.... ok, salvo!
Atualize seu navegador";
} #fecho o else
Além das opções padrões (
name, value, expires
), ainda contamos com os seguintes parâmetros:
domain = '.codigofonte.net'
- significa que o cookie só funcionará com o domínio codigofonte.net.
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
/cgi-bin/scripts
poderão utilizar.
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.
$cookie = $cgi->cookie( -name=>'meu_cookie', -value=>"Estou gravado!", -domain => '.codigofonte.net', -expires=>"+2m");
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
+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>
.
#!/usr/bin/perl
use CGI; #chamo o módulo CGI
use CGI::Cookie; #dentro dele, chamo o módulo do cookie
$cgi = new CGI;
if ($cgi->cookie('meu_cookie')) { #caso o cookie exista, imprimo
print "Content-type: text/html"; #tipo de documento: HTML
print "Cookie ativo!
";
print $cgi-cookie('meu_cookie'); #meu cookie
} else { #se não existe, ele grava
$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.
print $cgi->header( -cookie=>$cookie ); #imprimo o cookie no navegador
print "Gravando cookie.... ok, salvo!
Atualize seu navegador";
} #fecho o else
Opções:
-domain => '.codigofonte.net'
- significa que o cookie só funcionará com o domínio codigofonte.net.
-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
/cgi-bin/scripts
poderão utilizar.
-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.
#!/usr/bin/perl
foreach (split(/; /,$ENV{'HTTP_COOKIE'})) {
$_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
($nome,$valor) = split(/=/); $COOKIE{$nome} = $valor;
}
if ($COOKIE{'meu_biscoito'}) { #caso o cookie exista, imprimo
print "Content-type: text/html"; #tipo de documento: HTML
print "Cookie (biscoito) ativo!
";
print "$COOKIE{'meu_biscoito'}"; #meu cookie
} else { #se não existe, ele grava
print "Set-Cookie: meu_biscoito=ESTOU GRAVADO VIU?!; expires=+2m ;";
print "Content-type: text/html"; #tipo de documento: HTML
print "Gravando cookie.... ok, salvo!
Atualize seu navegador";
} #fecho o else
Além das opções padrões (
name, value, expires
), ainda contamos com os seguintes parâmetros:
domain = '.codigofonte.net'
- significa que o cookie só funcionará com o domínio codigofonte.net.
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
/cgi-bin/scripts
poderão utilizar.
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.
$cookie = $cgi->cookie( -name=>'meu_cookie', -value=>"Estou gravado!", -domain => '.codigofonte.net', -expires=>"+2m");
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
+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>
.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Qua 16 Nov - 16:14 por fernandosena
» Segurança e redes sem fio
Qua 16 Nov - 16:11 por fernandosena
» Nokia lançará tablet com Windows 8 em junho de 2012, diz executivo
Qua 16 Nov - 16:05 por fernandosena
» Empresa registra aumento de 472% no número de vírus para Android
Qua 16 Nov - 16:03 por fernandosena
» YouTube investe US$ 100 milhões em vídeos
Sex 7 Out - 8:34 por fernandosena
» Todos os títulos futuros da Microsoft devem trazer suporte para o Kinect
Sex 7 Out - 8:25 por fernandosena
» Resident Evil 5 - PC
Sex 7 Out - 8:22 por fernandosena
» Novo trailer de Assassin’s Creed Revelations é lançado
Sex 7 Out - 8:12 por fernandosena
» Biostar apresenta nova placa-mãe que permite acesso remoto via smartphones
Sex 7 Out - 8:08 por fernandosena