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 24/05/2006, 15h43   #1
Invité régulier
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2006
Messages : 22
Points : 6
Points : 6
Par défaut Erreur lorsque je ferme une session.

Salut à tous.

J'ai un petit soucis quand je veux fermer une session. J'ai le message suivant qui apparait:
Citation:
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\dune\admin\index.php:6) in c:\program files\easyphp1-8\www\dune\admin\deconnexion.php on line 4
Voici une partie du code de la page "index.php"
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
       <title>..:: Espace Admin ::..</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design admin" href="./style/admin.css" />
   </head>
	   <body>
		<div id="menu" >
			<?php
			  include('menu.html');   // Nous appelons notre menu
			?>
		</div>
Et voici la le code de "deconnexion.php":
Code :
1
2
3
4
5
<?php
@session_start();
$_SESSION = array ();
header("location: ./index.php");
?>
Et pour finir voici l'arborescence:

Code :
1
2
3
4
5
6
7
8
9
10
 
WWW
|
|----dune (rep.)
       |-- admin (rep.)
             |-- style (rep.)
                   |-- admin.css
             |--index.php
             |--deconnexion.php
             |--menu.html
Je sais pas d'ou sa vien. Si vous pouviez m'aidé.
Merci d'avance.
fredangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h45   #2
Membre éprouvé
 
Inscription : février 2005
Messages : 401
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : février 2005
Messages : 401
Points : 450
Points : 450
Tu n'as pas un saut de ligne qui traine avant ton <? dans deconnexion.php des fois ?
Sylvain71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h46   #3
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
vire le @ devant le session_start() déja !
ensuite verifie que tu n'as pas un espace ou un saut de ligne avant le :
<?php
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h46   #4
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
ton deconnexion.php il est appelé directement ? ou c'est un include ?
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h49   #5
Membre du Club
 
Inscription : mai 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 142
Points : 54
Points : 54
essaye ca:
<?php
session_start();
session_unset();
session_destroy();
header('Location:index.php');
exit();
?>
yanice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 15h59   #6
Invité régulier
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2006
Messages : 22
Points : 6
Points : 6
Citation:
Envoyé par Sylvain71
Tu n'as pas un saut de ligne qui traine avant ton <? dans deconnexion.php des fois ?
non



Citation:
Envoyé par Lorenzo77
vire le @ devant le session_start() déja !
quand je le vire, j'ai les messages suivant:
Citation:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\dune\admin\index.php:6) in c:\program files\easyphp1-8\www\dune\admin\deconnexion.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\dune\admin\index.php:6) in c:\program files\easyphp1-8\www\dune\admin\deconnexion.php on line 4


Citation:
Envoyé par Eusebius
ton deconnexion.php il est appelé directement ? ou c'est un include ?
Oui



Citation:
Envoyé par yanice
essaye ca:
<?php
session_start();
session_unset();
session_destroy();
header('Location:index.php');
exit();
?>
Voici ce que ca me retoure comme erreur:
Citation:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\program files\easyphp1-8\www\dune\admin\index.php:6) in c:\program files\easyphp1-8\www\dune\admin\deconnexion.php on line 2

Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\dune\admin\index.php:6) in c:\program files\easyphp1-8\www\dune\admin\deconnexion.php on line 5
fredangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h06   #7
Membre du Club
 
Inscription : mai 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 142
Points : 54
Points : 54
pour le @ cest normal que lorsque tu lenlève ca taffiche une erreur, cest une protection dans le cas où il y aurait un bug, le nom de l'erreur ne saffich pas et surtout ca permet, le cas échéant, de masquer les chemins de tes fichiers

sinon,tu n'as pas laissé trainé un echo dans ton fichier deconnexion.php? tas juste utilisé ce que je tai envoyé? et il n'y a pas un header qlqepart dans index.php?
yanice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h06   #8
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Si j'ai bien compris, c'est un include qui est fait dans index.php, et index.php affiche quelque chose. Tu ne peux donc plus envoyer de header, ni faire de session_start après ça.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h12   #9
Invité régulier
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2006
Messages : 22
Points : 6
Points : 6
Voila le code de la page index:
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
       <title>..:: Espace Admin ::..</title>
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design admin" href="./style/admin.css" />
   </head>
	   <body>
		<div id="menu" >
			<?php
			  include('menu.html');   // Nous appelons notre menu
			?>
		</div>
 
		<div id="enteteadmin">
			..:: bienvenue dans l'espace admin ::..
		</div>
 
		<div id="message">
			<?php
			$tbErreur = array(
			"Le nom d'utilisateur ou le mot de passe sont incorrect.",
			"Vous avez oublié de remplir un champ.",
			"",);
 
			$tbMess = array(
			"Vous etes bien logué",
			"dsdsds",
			"",);
 
			if (isset($_GET['erreur']))
				{
				echo $tbErreur[$_GET['erreur']];
				}
 
				elseif (isset($_GET['mess']))
					{
					echo $tbMess[$_GET['mess']];
					}
 
					else 
					{ 
					echo '.................................................................................................................................................';
					}
			?>
		</div>
 
    	<div id="corps">
			<?php
			$pageOK = array('accueil' => 'accueil.php',
			    	   		  'listdj' => './dj/listdj.php',
							  'ajoutdj' => './dj/ajoutdj.php',
							  'moddj' => './dj/moddj.php',
							  'suppdj' => './dj/suppdj.php',
							  'listlieu' => './lieu/listlieu.php',
							  'ajoutlieu' => './lieu/ajoutlieu.php',						  
							  'deconnexion' => 'deconnexion.php',);
 
			if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) 
				{
				include($pageOK[$_GET['page']]);
			  	}
				 else 
				 	{
				   // Page par défaut quant elle n'existe pas dans le tableau
			  		}
			?>
		</div>
 
 
   </body>
</html
Je tiens à precisé que le code est loin d'etre terminé, donc pas d'affolment si vous trouvé des trucs cheloux
fredangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h17   #10
Expert Confirmé
 
Avatar de Eusebius
 
Inscription : avril 2003
Messages : 3 286
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 3 286
Points : 3 155
Points : 3 155
Ben c'est bien ce que j'ai dit... tu peux pas faire un header dans un include si tu as affiché quelque chose dans index.php.
Eusebius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h22   #11
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
l'INCLUDE de ton fichier doit etre fait avant tout affichage ...
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h27   #12
Invité régulier
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2006
Messages : 22
Points : 6
Points : 6


Et comment je peux mettre ca en place pour que ca fonctionne correctement???
fredangel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h34   #13
Membre Expert
 
Avatar de Lorenzo77
 
Inscription : mai 2006
Messages : 1 294
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 1 294
Points : 1 220
Points : 1 220
tu fais tes verifications + redirections avant tous les envois de données, tout simplement.
la tu melanges trop le code PHP et HTML, ca va en plus t'apprendre a mieux separer meme si c'est un peu plus long a taper ...


par contre si tu veux continuer a faire comme tu fais sans rien changer il y a un moyen
ca s'appelle la bufferisation de sortie et tu as toutes les infos ici :
http://fr2.php.net/manual/fr/ref.outcontrol.php
avec ces fonctions tu pourras faire des appels a header() et setcookie() meme apres avoir envoyé des données pour l'affichage
Lorenzo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2006, 16h38   #14
Invité régulier
 
Inscription : mai 2006
Messages : 22
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Hérault (Languedoc Roussillon)

Informations forums :
Inscription : mai 2006
Messages : 22
Points : 6
Points : 6
Ok merci bien pour votre aide.

Maintenant me reste plus qu'a me mettre au boulot
fredangel 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 12h16.


 
 
 
 
Partenaires

Hébergement Web