j'ai deux scripts perl, un qui genere un cookie, l'autre
qui lit le cookie.
Voici les scripts :
--------------------------------------------------------
#!/usr/bin/perl -w
# cookie-set.cgi Définir un cookie
use CGI qw(:standard);
unless (param()) {
# display form
print
header(),
start_html("Cookie Baker"),
h1("Cookie Baker"),
start_form(),
p("Quel est votre nom ?", textfield("NAME")),
submit(),
end_form(),
end_html();
} else {
# Traiter le formulaire et définir le cookie
$name = param("NAME");
$to_set = cookie(-name => "username",
-value => $name,
-expires => "+60s",
-path => ".",
);
print
header(-cookie => $to_set),
start_html("Merci !"),
h1("Merci d'avoir utilisé le Cookie Baker"),
p("Je définis votre nom en ", b($name),
"et je m'en souviendrai si vous revenez ",
a({-href => "cookie-get.pl"}, "ici"),
" dans les 30 prochaines secondes."),
end_html();
}
-----------------------------------------------------
!/usr/bin/perl -w
# cookie-get.cgi Extraire la valeur d'un cookie
use CGI qw(:standard);
$name = cookie("username");
print
header(),
start_html("Bonjour $name"),
h1("Bonjour " . $name || "étranger");
if ($name) {
print p("Vous voyez, j'ai retenu votre nom !");
} else {
print p("Le cookie doit avoir expiré.");
}
print end_html();
----------------------------------------------------
Quand je lance cookie-set.pl depuis mon serveur
http://bluemoon.anoptique.net/cgi-bin/cookie-set.pl
le cookie est vraiment créé mais cookie-get.pl
n'arrive pas à le lire !!!
Vous définissez un cookie avec le path '.../cookie-set.pl' et vous tentez de le lire avec un path qui est '.../cookie-get.pl' !
Vous m'intéressez... A quel moment déclaré-je le path de cookie-get.pl ?
Que dois-je mettre en clair pour que ca marche ? Un path absolu ?
Merci beaucoup pour votre aide ?
Paul Gaborit
À (at) Mon, 05 Jun 2006 23:49:28 +0200, Nicolas Montessuit écrivait (wrote):
Paul Gaborit wrote:
Vous définissez un cookie avec le path '.../cookie-set.pl' et vous tentez de le lire avec un path qui est '.../cookie-get.pl' !
Vous m'intéressez... A quel moment déclaré-je le path de cookie-get.pl ?
Dans votre exemple initial, vous utilisiez "." comme argument à '-path' lors de la construction du cookie. Dans les autres exemples, après un rapide coup d'oeil, je pense que c'est le path et le domaine par défaut qui sont utilisés (consrtuits à partir de l'URL complet du script).
Que dois-je mettre en clair pour que ca marche ? Un path absolu ?
Vous devez comprendre à quoi sert ce chemin (Path) et ce domaine (Domain) en lisant soit la RFC correspondante (la RFC2965) soit la page wikipedia suivante :
<http://en.wikipedia.org/wiki/HTTP_cookie>
en particulier ce qui concerne 'Path' et 'Domain'.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 05 Jun 2006 23:49:28 +0200,
Nicolas Montessuit <nicolasmontessuit@wanadoo.fr> écrivait (wrote):
Paul Gaborit wrote:
Vous définissez un cookie avec le path '.../cookie-set.pl' et vous
tentez de le lire avec un path qui est '.../cookie-get.pl' !
Vous m'intéressez... A quel moment déclaré-je le path de
cookie-get.pl ?
Dans votre exemple initial, vous utilisiez "." comme argument à
'-path' lors de la construction du cookie. Dans les autres exemples,
après un rapide coup d'oeil, je pense que c'est le path et le domaine
par défaut qui sont utilisés (consrtuits à partir de l'URL complet du
script).
Que dois-je mettre en clair pour que ca marche ? Un path
absolu ?
Vous devez comprendre à quoi sert ce chemin (Path) et ce domaine
(Domain) en lisant soit la RFC correspondante (la RFC2965) soit la
page wikipedia suivante :
<http://en.wikipedia.org/wiki/HTTP_cookie>
en particulier ce qui concerne 'Path' et 'Domain'.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Mon, 05 Jun 2006 23:49:28 +0200, Nicolas Montessuit écrivait (wrote):
Paul Gaborit wrote:
Vous définissez un cookie avec le path '.../cookie-set.pl' et vous tentez de le lire avec un path qui est '.../cookie-get.pl' !
Vous m'intéressez... A quel moment déclaré-je le path de cookie-get.pl ?
Dans votre exemple initial, vous utilisiez "." comme argument à '-path' lors de la construction du cookie. Dans les autres exemples, après un rapide coup d'oeil, je pense que c'est le path et le domaine par défaut qui sont utilisés (consrtuits à partir de l'URL complet du script).
Que dois-je mettre en clair pour que ca marche ? Un path absolu ?
Vous devez comprendre à quoi sert ce chemin (Path) et ce domaine (Domain) en lisant soit la RFC correspondante (la RFC2965) soit la page wikipedia suivante :
<http://en.wikipedia.org/wiki/HTTP_cookie>
en particulier ce qui concerne 'Path' et 'Domain'.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Thibaud
$name=$param{'name'}; Bonne idée mais ca continue a ne pas marcher...
Oups $name=$param{'nom'};
$name=$param{'name'};
Bonne idée mais ca continue a ne pas marcher...
print header(), start_html("Bonjour $name"), h1("Bonjour " . $name || "étranger"); if ($name) { print p("Vous voyez, j'ai retenu votre nom !"); } else { print p("Le cookie doit avoir expiré."); } print end_html(); --------------------------------------------------
Pourtant, avec un path '/' ca devrait marcher, non ?
Paul Gaborit
À (at) Tue, 06 Jun 2006 10:18:04 +0200, Nicolas Montessuit écrivait (wrote):
J'ai mis '/' comme path mais ca ne marche toujours pas
En fait, en relisant la doc du module CGI, je me suis aperçu que, par défaut, il devrait utiliser le path "/"... mais ça va mieux en le disant explicitement.
En tous cas, maintenant, le script 'cookie-set.pl' crée bien un cookie de nom 'username', de path '/' sur le domaine 'bluemoon.anoptique.net'.
%param = cookie("username", -path => '/');
Là, vous tentez de lire le 'cookie' envoyé par le navigateur. Il est donc inutile de préciser le '-path'.
Si ça ne marche toujours pas, vous pouvez essayer de récupérer la liste des noms de cookies effectivement envoyés en appelant la fonction 'cookie' sans paramètre.
Vérifiez aussi que votre navigateur accepte bien les cookies (en général et pour ce site en particulier).
Vous pouvez aussi tenter en mettant une durée d'expiration plus longue car c'est en fait une date qui est transmise ce qui nécessite donc une synchronisation parfaite des horloges du client et du serveur (dans votre cas à 30 secondes près).
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 06 Jun 2006 10:18:04 +0200,
Nicolas Montessuit <nicolasmontessuit@wanadoo.fr> écrivait (wrote):
J'ai mis '/' comme path mais ca ne marche toujours pas
En fait, en relisant la doc du module CGI, je me suis aperçu que, par
défaut, il devrait utiliser le path "/"... mais ça va mieux en le
disant explicitement.
En tous cas, maintenant, le script 'cookie-set.pl' crée bien un cookie
de nom 'username', de path '/' sur le domaine 'bluemoon.anoptique.net'.
%param = cookie("username", -path => '/');
Là, vous tentez de lire le 'cookie' envoyé par le navigateur. Il est
donc inutile de préciser le '-path'.
Si ça ne marche toujours pas, vous pouvez essayer de récupérer la
liste des noms de cookies effectivement envoyés en appelant la
fonction 'cookie' sans paramètre.
Vérifiez aussi que votre navigateur accepte bien les cookies (en
général et pour ce site en particulier).
Vous pouvez aussi tenter en mettant une durée d'expiration plus longue
car c'est en fait une date qui est transmise ce qui nécessite donc une
synchronisation parfaite des horloges du client et du serveur (dans
votre cas à 30 secondes près).
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>
À (at) Tue, 06 Jun 2006 10:18:04 +0200, Nicolas Montessuit écrivait (wrote):
J'ai mis '/' comme path mais ca ne marche toujours pas
En fait, en relisant la doc du module CGI, je me suis aperçu que, par défaut, il devrait utiliser le path "/"... mais ça va mieux en le disant explicitement.
En tous cas, maintenant, le script 'cookie-set.pl' crée bien un cookie de nom 'username', de path '/' sur le domaine 'bluemoon.anoptique.net'.
%param = cookie("username", -path => '/');
Là, vous tentez de lire le 'cookie' envoyé par le navigateur. Il est donc inutile de préciser le '-path'.
Si ça ne marche toujours pas, vous pouvez essayer de récupérer la liste des noms de cookies effectivement envoyés en appelant la fonction 'cookie' sans paramètre.
Vérifiez aussi que votre navigateur accepte bien les cookies (en général et pour ce site en particulier).
Vous pouvez aussi tenter en mettant une durée d'expiration plus longue car c'est en fait une date qui est transmise ce qui nécessite donc une synchronisation parfaite des horloges du client et du serveur (dans votre cas à 30 secondes près).
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/> Perl en français - <http://perl.enstimac.fr/>
Nicolas Montessuit
Si ça ne marche toujours pas, vous pouvez essayer de récupérer la liste des noms de cookies effectivement envoyés en appelant la fonction 'cookie' sans paramètre.
Bien vu, en affichant 'cookie', le vide s'affiche !
Autrement dit, il ne génère pas de cookie !
Que faire ?
Si ça ne marche toujours pas, vous pouvez essayer de récupérer la
liste des noms de cookies effectivement envoyés en appelant la
fonction 'cookie' sans paramètre.
Bien vu, en affichant 'cookie', le vide s'affiche !
Si ça ne marche toujours pas, vous pouvez essayer de récupérer la liste des noms de cookies effectivement envoyés en appelant la fonction 'cookie' sans paramètre.
Bien vu, en affichant 'cookie', le vide s'affiche !