[CGI] Conflit dans la création d'un objet CGI
ReHello! =/
Est-il possible d'appeler 2 fois un module $blahblah = CGI->new(); ? Car dans l'execution de mon script, il se créé une erreur ou plutôt un conflit car, à mon avis, le package nuit à l'index puisque (c'est un script d'upload) les pages s'affichent correctement mais les données n'apparaissent plus et l'upload ne se fait plus...
Code du package:
Code:
1 2 3 4 5 6 7 8 9 10 11
|
package Core;
use strict;
use CGI qw/:standard/;
use CGI::Carp qw(fatalsToBrowser);
[...]
my $query = CGI->new();
my $ulog = $query->cookie(-name => "s2o-login");
my $pass = $query->cookie(-name => "s2o-pass");
[...] |
Ca, c'est pour le package envoyé à index.cgi... Et dans index.cgi, j'ai
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
#!/usr/bin/perl
### s2o, oct 2007
use strict;
use DBI();
use CGI::Carp qw(fatalsToBrowser);
use lib '.';
use Core;
use HTML::Template;
use CGI qw/:standard/;
use Digest::Perl::MD5 qw(md5_base64);
my $f;
my $cgi = CGI->new();
my $act = $cgi->param('act');
[...] |
Et j'ai bien l'impression que ces 2 nouveaux objets CGI sont en conflit car si j'enlève le CGI->new(); du package en remplaçant les variables par des constantes, ça fonctionne!
Un idée?
Merci d'avance!
Résolution du conflit grace à CGI::Cookie
Résolu! Oui, pour ceux qui aurait un souci similaire, utilisez CGI::Cookie!
Exemple:
Code:
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 26 27 28 29 30 31 32 33 34 35
| use strict; # toujours en strict
use CGI qw/:standard/; # ou use CGI;
use CGI::Cookie; # pour la récup' du cookie
use CGI::Carp qw(fatalsToBrowser); # pour le log
# root - récupérer le cookie
my $cookie; &getCookie;
sub getCookie
{
my $r = shift;
my %cookies = CGI::Cookie->fetch($r);
my $cookies = %cookies;
# on vérifie que le cookie contient une valeur
if (defined $cookies)
{
$cookie = $cookies{("nom_du_cookie")};
# si oui, on retourne la valeur dans $cookie
if (defined $cookie) {
$cookie = $nom_du_cookie->value;
}}else{
# si non, on retourne soit une erreur, soit un blanc
$cookie="";
}
} |
Et voilà! Maintenant, si quelqu'un à plus simple, n'hésitez pas à poster!! =)