#1 Le 11/03/2008, à 09:52
- sylvain_cid
Récupérer paramètres d'une session CGI-PERL sous Apache
Bonjour à tous,
Dans le cadre d'un projet, j'essaye de mettre en place des sessions en cgi-perl. Ces sessions ont pour but de stocker le login et le mot de passe d'un utilisateur et ainsi de connaître l'utilisateur loggué sur l'application (dans n'importe quelle autre page).
Mais voilà, après beaucoup de tentatives infructueuses (:(), je n'arrive pas à résoudre un problème. Je crée bien la session mais je n'arrive malheureusement pas à récupérer les paramètres (login/password) sur une autre page. Je ne sais pas si cela vient du code, de la configuration d'Apache ou autre chose ??!!
:)Pour information, le code se trouve dans /usr/lib/cgi-bin/testsession/, les droits sont à 777, le mod_perl est bien installé et même le module session (CGI-Session-4.10). La version de perl est 5.8.8 et celle d'Apache est Apache/2.2.4.
Voici le code (très simplifié) de mon application :
- Première page, initialisation de la session
#!/usr/bin/perl -w
use CGI::Session;
use CGI;
$session = new CGI::Session('driver:File',undef, {'Directory'=>'/usr/lib/cgi-bin/testsession/session'});
#print $session->header();
# storing data in the session
$session->param('login', 'mylogin');
$session->param('password', 'mypassword');
# expire the session itself
$session->expire('+1h');
print << 'EOT';
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<HTML>
<head>
<title>Page Session 1 : session.pl</title>
<script>
document.location.replace("session2.pl");
# redirection vers la deuxième page
</script>
</head>
<body>
</html>
EOT
- Deuxième page, chargement de la session
#!/usr/bin/perl -w
use CGI::Session;
use CGI;
my $session = CGI::Session->load();
print << 'EOT';
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<HTML>
<head>
<title>Page Session 2 : session2.pl</title>
</head>
<body>
EOT
print "Login : ".$session->param('login');
print "Password : ".$session->param('password');
print << 'EOT';
</body>
</html>
EOT
- Configuration d'apache (/etc/apache2/sites-available/default)
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
<Directory "/usr/lib/cgi-bin/">
#AllowOverride None
SetHandler perl-script
PerlResponseHandler ModPerl::Registry
PerlOptions +ParseHeaders
Options +ExecCGI +Indexes +FollowSymLinks +MultiViews
Order allow,deny
Allow from all
</Directory>
ps : un fichier de session est bien créé dans le répertoire session
Merci pour votre aide,
Sylvain
Hors ligne