Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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