Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/04/2007, 17h56   #1
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Par défaut [Sécurité] problème déconnexion d'une session

Bonjour

J'ai un projet PHP à faire avec l'IUT et j'ai toujours un problème qui revient avec mes sessions, je m'explique :
Je me connecte, j'arrive sur ma page admin, ensuite je me déconnecte et lorsque je clique sur page précédent dans mon navigateur, je retourne sur ma page admin...

voici le code de la page deconnection:

Code :
1
2
3
4
5
6
<?php
session_start();
session_destroy();
unset($_SESSION);
header("Location: blog.php");
?>
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 18h19   #2
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
Il y a de fortes chances pour que ça soit tout simplement ton navigateur qui a gardé cette page en cache.
Essayes de faire un "rafraichir" ou "actualiser" (F5) après avoir fait "précédent" pour en avoir le coeur net.
Si ce n'est qu'un problème de cache, ce n'est pas grave, il n'y a aucun risque au point de vue sécurité, tu n'as que l'illusion d'être encore connecté mais c'est faux.
Pour le résoudre il faut configurer ton navigateur pour ne pas mettre en cache les pages (c'est nettement plus confortable quand on développe) et/ou mettre dans les entetes http et/ou dans le head de ta page html des métadonnées qui indiquent aux navigateurs et autres proxy de ne pas mettre cette page-ci en cache :

dans les entetes http (en php) :
Code :
header('Pragma: no-cache');
dans le head (en html) :
Code :
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 18h39   #3
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Mon projet est en faite la création d'un site de blog (classique! ^^).

Lorsque je me connecte, j'arrive sur ma page admin où je peux ajouter/supprimer des articles,... je me déconnecte, je retourne donc à ma page principal, là je clique sur précédent je retombe sur ma page admin où je peux toujours ajouter,... et c'est lorsque je retourne sur ma page principal que là, je suis réellement déconnecté...

Je ne pense pas que ce soit problème de cache, j'ai actualiser après mettre déconnecté, et j'ai ajouté dans es page ce que tu m'as conseillé...Ce doit donc pas être ça...
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 19h05   #4
Membre chevronné
 
Avatar de Hervé Saladin
 
Développeur Web
Inscription : décembre 2004
Messages : 636
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2004
Messages : 636
Points : 689
Points : 689
fais voir le code de la page admin et de la page principal (en particulier le code qui vérifie que l'utilisateur est bien authentifié)
__________________
Ne cliquez pas sur ce lien
Hervé Saladin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2007, 19h31   #5
Nouveau Membre du Club
 
Femme
Développeur Web
Inscription : janvier 2006
Messages : 102
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2006
Messages : 102
Points : 28
Points : 28
Voici le code de ma page principal où on se connecte (blog.php):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if  (!isset($_SESSION['authentification']))    
{
	echo '<div class="identification"><form action="verification.php" method="POST"><p>Login : <input type="text" name="login"></p><p>Mot de Passe <input type="password" name="pass"></p><p><input type="submit" value="Se connecter"></p></form></div>';
}
else
{
if ($_SESSION['authentification'] == "autorisé")
{
echo "<div class='identification'><p><a href='deconnection.php'>Se déconnecter</a></p><p><a href='admin.php'>Administrateur</a></p></div>";
}
else
{
	// Si il y a une erreur d'authentification alors on détruit la variable $_session et on retourne à la page précédent pour tenter de se reconnecter.
echo "<div class='identification'>";
echo "<p>Erreur d'authentification!</p>";
unset($_SESSION['authentification']); 
echo "<a href='blog.php'>Retour</a>";
echo "</div>";
et voici le code de ma page de vérification où il n'y a que du code php (verif.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
<?php
session_start();
header('Pragma: no-cache');
// vérification des identifiant
$fichier=fopen("MdP.txt","r");
$mdp=fgets($fichier);
// concaténation des informations: pseudo et mot de passe
$cat=explode("||", $mdp);
$nomutilisateur = $cat[0];
$motdepass = $cat[1];
$util=$_POST['login'];
$passw=$_POST['pass'];
// si les information sont correct au met la variable $_session sur autorisé et on redirige sur la page admin
if (($nomutilisateur == $util) && ($motdepass == $passw))
{ 
	$_SESSION['authentification'] = "autorisé";
	header("Location: admin.php"); 
 
}
else 
{	// si les informations sont fausses on redirige vers blog.php
	$_SESSION['authentification'] = "nonautorisé";
	header("Location: blog.php");
}
?>
Et voilà la page admin.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
	<?php
		if  (!isset($_SESSION['authentification']))    
			{
			header("Location: blog.php");
			}
		else
			{
				if ($_SESSION['authentification'] == "autorisé")
					{
					echo "<div class='identification'>";
					echo "utilisateur connecté</br>";
					echo "<a href='deconnection.php'>Se déconnecter</a>";
					echo "</div>";
					}
				else
					{
					echo "utilisateur non connecté</br>";
					echo "<a href='blog.php'>Se connecter</a>";
					}
			}
	?>
Bon soyez indulgent s'il vous plaît...j'ai appris comment marché les sessions il n'y a pas longtemps et j'ai fais le code moi même...
gazelle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h30.


 
 
 
 
Partenaires

Hébergement Web