Bonjour,
Le plus pratique, pour créer et lire un cookie en Perl est d'utiliser le module CGI.pm
voici deux scripts cgi à placer dans le même répertoire du serveur, le premier crée un cookie, le second le lit.
(Il faudra changer la première ligne car je les ai testés sous windows)
On peut appeler le premier creercookie.cgi et le second lirecookie.cgi
Voici donc creercookie.cgi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #!/perl/bin/perl -wT
use CGI qw(:standard) ;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;
use strict ;
my $cookie=cookie(-name=>'moncookie',
-value=>'#LWP-Cookies-1.0',
-expire=>'+3d') ;
print header(-cookie=>$cookie) ;
print start_html("Exemple de cookie");
print <<EndofData;
<h2>Bonjour </h2>
Je viens de créé un cookie nommé moncookie
de valeur : #LWP-Cookies-1.0
d'une durée de vie de 3 jours.
</body></html>
EndofData |
Et voici lirecookie.cgi
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #!/perl/bin/perl -wT
use CGI qw(:standard) ;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;
use strict ;
print header ;
print start_html("Exemple de lecture d'un cookie") ;
print h2("Bonjour") ;
if(my $valeurducookie=cookie('moncookie'))
{
print "la valeur du cookie nommé moncookie est $valeurducookie\n";
}
else
{
print "Il n'existe pas de cookie nommé moncookie\n";
}
print end_html ; |
CGI.pm permet de créer plusieurs cookie et de définir leurs propriétés.
Après la mise au point il plus prudent de supprimer la ligne
use CGI::Carp qw(warningsToBrowser fatalsToBrowser) ;
des scripts.
Cordialement,
Nibroc.
Envoyé par
tony872
Bonjour a tous,
Apres de nombreuses recherches je ne parviens pas a recuperer les cookies d une page web.
Mes principales recherches m'ont menes a utiliser HTTP::Cookies dans LWP::UserAgent
Voila le code que j ai actuellement (concernant le script perl):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| #!/usr/bin/perl
use strict;
use LWP::UserAgent;
use HTTP::Cookies;
use Data::Dumper;
my $cookie = HTTP::Cookies->new(
file => 'cookie.txt',
autosave => 1,
ignore_discard => 1
);
my $ua = new LWP::UserAgent;
$ua->agent("Mozilla 3.6.2");
$ua->cookie_jar($cookie);
my $req = new HTTP::Request(
GET => 'http://***URL***/test.html'
);
my $res = $ua->request($req);
$cookie->extract_cookies($res); |
Et concernant la page web en question :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<html>
<head>
<script language="JavaScript">
function setCookie(nom, valeur, jours)
{
var expDate = new Date()
expDate.setTime(expDate.getTime() + (jours * 24 * 3600 * 1000))
document.cookie = nom + "=" + escape(valeur)
+ ";expires=" + expDate.toGMTString()
}
</script>
</head>
<body>
<script>
setCookie("toto", 24, 2);
</script>
</body>
</html> |
Le cookie se SET correctement dans le navigateur internet, cependant dans cookie.txt il n'y a que "#LWP-Cookies-1.0"
J ai souvent trouve sur le net l utilite de l attribut "ignore_discard" set a 1 pour la gestion des cookies. mais il y est deja et ca n a pas resolu le probleme.
Si quelqu'un parmi vous a une idee de l origine du probleme j en serai tres reconnaissant.
Merci
Partager