Bonjour,
J'ai créé une application PHP qui content 5 fichiers :
- index.php
- login.php
- dbconnect.php
- accueil.php
- fonction1.php
L'accès à l'application se fait après identification par login/password sur la page index.php.
- index.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <title> Authentification</title> <center> <br> <strong>Authentification</strong> <br> <?php echo '<br><br>Veuillez saisir votre identifiant et mot de passe :'; ?> <br><br> <form action="login.php" method='post'> <table align="center" border="0"> <tr> <td>Identifiant :</td> <td><input type="text" name="login" maxlength="10"></td> </tr> <tr> <td>Mot de passe :</td> <td><input type="password"name="pass" maxlength="10"></td> </tr> <tr> <td></td> <td colspan="2" align="left"><input type="submit" value="Valider"></td> </tr> </table> </form>
Après post du formulaire (méthode POST), l'utilisateur est renvoyé sur la page login.php.
- login.php :
Voici la page de connexion à la Base de Données (dbconnect.php).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php session_start(); header("Content-Type: text/html; charset=iso-8859-15"); include('dbconnect.php'); if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) { extract($_POST); // on recupère le password de la table associé au login du visiteur $sql = "select password from utilisateurs where login='".$login."'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $data = mysql_fetch_assoc($req); if($data['password'] != $pass) { echo '<p><font color="red">L\'identifiant et/ou le mot de passe sont incorrects.<br>Merci de recommencer votre saisie.</font></p>'; include('index.php'); // On inclut le formulaire d'identification mysql_close($db); exit; } else { $_SESSION['login'] = $login; // lien pour renvoyer vers la page d'accueil include('accueil.php'); exit; } } else { echo '<p><font color="red">Un ou plusieurs champs n\'ont pas été remplis. <br>Merci de recommencer votre saisie.</font></p>'; include('index.php'); // On inclut le formulaire d'identification mysql_close($db); exit; } ?>
- dbconnect.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php // ouverture de connexion vers mysql $db = mysql_connect('localhost', 'root', 'password'); mysql_select_db('app_usr',$db); ?>
Voici la page d'accueil (accueil.php).
- accueil.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php session_start(); header('charset=iso-8859-15; Content-Type: text/html'); /* si la variable de session login n'existe pas cela siginifie que le visiteur n'a pas de session ouverte, il n'est donc pas logué ni autorisé à acceder à l'espace membres */ if(!isset($_SESSION['login'])) { echo 'Vous n\'êtes pas autorisé à accéder à cette zone'; include('index.php'); exit; } else { include('dbconnect.php'); $login = $_SESSION['login']; $sql = "select pseudo from utilisateurs where login='".$login."'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $data = mysql_fetch_assoc($req); echo'<div style="text-align: right;">'.$data['pseudo'].' </div>'; } ?> <html> <head> <style type="text/css"> ul { list-style-type:none; } li { display:inline; } a { float:left; width:30%; text-align:center; text-decoration:none; color:white; font-weight:bold; background:#999900; padding:5px; margin: 0 auto; border-right:1px solid #FFFFFF; } a:hover { background:#CCCC00; } </style> <title>Accueil</title> <center> </head> <body> <strong>Accueil</strong> <br><br></center> <br> <ul> <li><a href="fonction1.php">Fonction 1</a></li> <li><a href="fonction2.php">Fonction 2</a></li> <li><a href="index.php">Se déconnecter</a></li> </ul> </body> </html>
La Fonction 1 est la suivante : (fonction1.php).
- fonction1.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 <?php session_start(); header("Content-Type: text/html; charset=iso-8859-15"); /* si la variable de session login n'existe pas cela siginifie que le visiteur n'a pas de session ouverte, il n'est donc pas authentifié ni autorisé à accéder à l'espace membres */ if(!isset($_SESSION['login'])) { echo 'Vous n\'êtes pas autorisé à accéder à cette zone'; include('login.php'); exit; } else { include('dbconnect.php'); $login = $_SESSION['login']; $sql = "select pseudo from utilisateurs where login='".$login."'"; $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $data = mysql_fetch_assoc($req); echo'<div style="text-align: right;">'.$data['pseudo'].' </div>'; } ?> <html> <head> <title> Fonction 1</title> <style type="text/css"> ul { list-style-type:none; } li { display:inline; } .menuhaut { position : relative; top:-45px; left:-48px; float:left; width:20%; text-align:center; text-decoration:none; color:white; font-weight:bold; background:#999900; padding:5px; margin: 0 auto; border-right:1px solid #FFFFFF; } a { float:left; width:18%; text-align:center; text-decoration:none; color:white; font-weight:bold; background:#999900; padding:5px; margin: 0 auto; border-right:1px solid #FFFFFF; } a:hover { background:#CCCC00; } </style> </head> <body> <ul> <li><a class="menuhaut" href="accueil.php">Accueil</a></li> <li><a class="menuhaut" href="fonction2.php">Fonction 2</a></li> <li><a class="menuhaut" href="index.php">Se déconnecter</a></li> </ul> <br><br> <center><strong>Fonction 1</strong></center> <br><br> </body> </html> <?php phpinfo(); ?></center>
Lorsque je clique sur Se déconnecter depuis la page d'accueil (lorsqu'on se trouve sur cette page, c'est la page login.php qui apparaît dans la barre d'adresse du navigateur), ma session expire bien : je suis renvoyé vers la page index.php et si je clique sur le bouton back de mon navigateur, ce dernier me dit que la session est expirée.
Problème : lorsque je me trouve dans la page fonction1.php et que je clique sur Se déconnecter, ma session n'expire pas : une fois renvoyé vers la page index.php, si je clique sur le bouton back du navigateur, j'arrive à revenir sur la page précédente.
Sauriez-vous comment forcer l'expiration de la session en cours lorsque je clique depuis la page fonction1.php sur Se déconnecter ?
NB: les navigateurs Internet Explorer 8.0.6 et Firefox 3.5.2 réagissent de la même façon.
Partager