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 30/06/2006, 16h26   #1
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Perte de données de session

J'ai un enchaînement de programme utilisant $_SESSION.

le1er index.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
// Déclaration Smarty
require('gestelle/setup.php');
$gestelle = new Smarty_gestelle;
// Inclusion de la configuration et des fonctions
include("inc/conf.php");
include("inc/fonctions.php");
// Inclusion de la vérification des droits d'accès
include("verif.php");
// Affichage
$gestelle->display('index.html');
include("inc/footer.php"); ?>
Le 2ème verif.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// Contrôle de la session
session_start();
$auth_session=$_SESSION['auth'];
if($auth_session != 'yes')
{
	session_unset(); // on efface toutes les variables de session
	session_destroy(); // on detruit la session en cours.
	mysql_close($connect_db);
	header("location: /".$prefixe_dossier."login.php");
	exit;
}
?>
Le 3ème logout.php :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
include("inc/conf.php");
session_start();// on démarre la session
 
// maintenant on détruit la session en cours.
session_unset(); // on efface toutes les variables de session
session_destroy(); // on detruit la session en cours.
 
// Maintenant on initialise la session
$_SESSION['auth']="";
 
// On renvoi sur la page d'index et il doit demander le login/mot de passe
header("location: /".$prefixe_dossier."index.php");
 
?>
Ma question : lorsque j'entre sur mon site au travers de index.php, verif.php s'exécute normalement.

Lorsque je veux sortir de ma session, je clique sur un bouton qui exécute logout.php et ensuite j'ai l'erreur suivante :

Notice: Undefined index: auth in c:\program files\easyphp1-8\www\gestelle\verif.php on line 4

Je ne vois pas pourquoi "auth" n'est plus défini, puisqu'il ne l'est pas plus lorsque je viens la première fois sur mon site.

Merci
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 16h48   #2
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
tu dois faire un session_start si ta session a été destroyée
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 17h12   #3
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Manque une ouverture de session ?

Ce serait dans index.php alors.

Ce qui donnerait :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
session_start();
// Déclaration Smarty
require('gestelle/setup.php');
$gestelle = new Smarty_gestelle;
// Inclusion de la configuration et des fonctions
include("inc/conf.php");
include("inc/fonctions.php");
// Inclusion de la vérification des droits d'accès
include("verif.php");
// Affichage
$gestelle->display('index.html');
include("inc/footer.php"); ?>
Mais dans ce cas j'ai un message qui ne va pas :

Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-8\www\gestelle\verif.php on line 3

Notice: Undefined index: auth in c:\program files\easyphp1-8\www\gestelle\verif.php on line 4

J'ai fait un programme repar.php :

Code :
1
2
3
4
5
6
7
<?php
session_start();
				$_SESSION['auth']="";
				$_SESSION['logname']="";
		   		header("Location: index.php?");
		   		exit();
?>
Il me permet de redémarrer.
lodan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2006, 18h12   #4
Membre extrêmement actif
 
Avatar de lodan
 
Inscription : juin 2006
Messages : 1 804
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 1 804
Points : 587
Points : 587
Par défaut Modif de logout.php

Je ne sais pas si je fais bien, mais en supprimant la ligne "Destroy", je reviens bien à une demande de mot de passe et si j'essaie de forcer l'url en entrant directement index.php je suis bloqué par le message suivant :

"Notice: Undefined index: auth in c:\program files\easyphp1-8\www\gestelle\verif.php on line 4"

Mais est-ce la bonne solution ?
lodan 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 13h26.


 
 
 
 
Partenaires

Hébergement Web