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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #!/usr/bin/perl
use strict;
use CGI qw(:standard);
use CGI::Session;
my $session;
my $already_header = 0;
# Si on a le paramètre login et mdp passé en paramètre, alors...
if ( defined param('login') && defined param('mdp') ) {
# on crée une session
$session = new CGI::Session() or die CGI::Session->errstr;
$session->expire('2h');
# on y stocke les données login et mdp
$session->param( 'login', param('login') );
$session->param( 'mdp', param('mdp') );
#on crée le cookie de session
print $session->header();
$already_header++;
}
# si on a un session existante ...
if ( not defined $session and defined cookie("CGISESSID") ) {
# on récupère l'id de la session
my $id = cookie("CGISESSID");
#on récupère la session
$session = CGI::Session->load($id);
undef $session if $session->is_empty();
}
if ( defined $session ) {
# si l'utilisateur à demandé de se déconnecter
if ( defined param('action') && param('action') eq 'deco' ) {
# on détruit sa session
$session->delete();
new_login();
} else {
print header() unless $already_header;
print start_html('Session'),
# on affiche le menu du compte
p(
"Bienvenue sur votre page de compte ",
$session->param("login"),
br(), a( { -href => 'session.cgi?action=deco' }, "Se déconnecter" ),
),
end_html();
}
}
else {
new_login();
}
sub new_login {
print header() unless $already_header;
# sinon on affiche le formulaire de saisie
print start_html('Session'),
start_form( -method => 'post', -action => 'session.cgi' ),
p( "Login", textfield( -name => 'login', -size => 20 ), ),
p( "Mot de passe", password_field( -name => 'mdp', -size => 20 ), ),
submit( -name => 'button', -value => 'Connecter' ), end_form(),
end_html();
} |
Partager