Vider la variable "$_SESSION"
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.
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
|
<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.
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 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;
}
?> |
Voici la page de connexion à la Base de Données (dbconnect.php).
Code:
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).
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 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).
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 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.