Página 1 de 1

Cómo crear Cookies con Perl

NotaPublicado: 2012-07-14 21:02 @918
por BlackJack
¡Hola! Quiero crear una página con usuarios y quisiera saber si me pueden pasar una página para poder descargar un módulo para crearlas y mejor si me pueden explicar cómo se usa. ¡Gracias!

Es que ya vi el tutorial de cómo crear Cookies de esta página pero me sale el siguiente error:
malformed header from script. Bad header=domain = http://www.mevolucion.com; : start.pl

Este es el módulo de la cookie que tengo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package cookie;
  2. sub set_cookie {
  3. my ($name, $value, $expiration, $path, $domain, $secure) = @_;
  4. print "Set-Cookie: $name = $value; expires = $expiration; path = $path;
  5. domain = $domain; $secure \n";
  6. return(1);
  7. }
  8.  
  9. sub get_cookie {
  10. my (@cookies, %return_cookie, $cookie, $key, $val);
  11. @cookies = split (/; /,$ENV{'HTTP_COOKIE'});
  12. foreach $cookie (@cookies){
  13. ($key, $val) = split (/=/,$cookie);
  14. $return_cookie{$key} = $val;
  15. }
  16. return (%return_cookie);
  17. }
  18. 1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

y este es la otra página, que la crea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!C:/xampp/perl/bin/perl.exe
  2. use CGI;
  3. my $query,%FORMS;
  4. $query=new CGI;
  5. %FORMS=$query->Vars;
  6. $nombre=$FORMS{"name"};
  7. $contra=$FORMS{"password"};
  8. use cookie;
  9. &cookie::set_cookie($nombre,$contra,'15-Jul-2012 00:00:00 GTM',"../Avengers","www.mevolucion.com");
  10. print "content-type: text/html \n\n";
  11. print "<a href=\"a.pl\">Otra Pagina</a>";
  12.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Re: Cómo crear Cookies con Perl

NotaPublicado: 2012-07-15 14:05 @628
por explorer
Si estás usando el módulo CGI, no necesitas ningún función externa para generar o leer cookies.

Con el módulo CGI puedes generarlas y recuperarlas con la función cookie().

Por ejemplo, puedes crearlas con:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
    $cookie = cookie(
                 -name    => 'sessionID',
                 -value   => 'xyzzy',
                 -expires => '+1h',
                 -path    => '/cgi-bin/database',
                 -domain  => '.capricorn.org',
                 -secure  => 1,
    );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
y luego la mandas en la cabecera de respuesta, en el header():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI ':standard';
...;
print header(-cookie=>$cookie);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Luego, más tarde, para recuperar el valor de la galleta, te vale con llamar a cookie() sin el parámetro -value, o directamente.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $galleta = cookie('sessionID');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


En el propio módulo CGI, en la sinopsis hay un ejemplo. Y una explicación más detallada en la sección HTTP COOKIES (en inglés).

Es más, con el módulo CGI no necesitas hacer el print("Content-Type..."), ni generar código HTML "a mano", como muestras al final del código. Mira mi CGI mínimo para que veas las posibilidades que ofrece CGI.

CGI usa el módulo CGI::Cookie, así que si quieres puedes usarlo directamente.

Otro asunto es por qué quieres usar cookies.

Si quieres controlar sesiones de usuario, tienes también CGI::Session, que simplifica un poco todo lo que tiene que ver con control de sesiones de usuarios.

Lamentablemente, no conozco ningún manual al respecto, salvo la propio documentación de los módulos (a veces, bastante liosa...). En estos foros hemos hablado de estos módulos en ocasiones pasadas. Usa el sistema de búsqueda para localizarlos.

Re: Cómo crear Cookies con Perl

NotaPublicado: 2012-07-16 14:22 @640
por danimera
Ya tenemos que modernizarnos un poco... por lo menos empieza con CGI-Session... aunque yo de ti, de una empezaría por un framework fácil como CGI-Application para controlar los usuarios...

Pero te recomiendo olvidar las cookies, y usa CGI-Session, que la verdad, como dice explorer, simplifica el trabajo...