IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur lorsque je ferme une session.


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    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:
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    @session_start();
    $_SESSION = array ();
    header("location: ./index.php");
    ?>
    Et pour finir voici l'arborescence:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre confirmé
    Inscrit en
    Février 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2005
    Messages : 419
    Points : 532
    Points
    532
    Par défaut
    Tu n'as pas un saut de ligne qui traine avant ton <? dans deconnexion.php des fois ?

  3. #3
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    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

  4. #4
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    ton deconnexion.php il est appelé directement ? ou c'est un include ?

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut
    essaye ca:
    <?php
    session_start();
    session_unset();
    session_destroy();
    header('Location:index.php');
    exit();
    ?>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    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:
    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:
    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

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 145
    Points : 91
    Points
    91
    Par défaut
    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?

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Voila le code de la page index:
    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
    <!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

  10. #10
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    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.

  11. #11
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    l'INCLUDE de ton fichier doit etre fait avant tout affichage ...

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut


    Et comment je peux mettre ca en place pour que ca fonctionne correctement???

  13. #13
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    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

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2006
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    Ok merci bien pour votre aide.

    Maintenant me reste plus qu'a me mettre au boulot

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/12/2012, 17h04
  2. lorsque je ferme une JFrame, la methode finalize implementée ne s'enclenche pas.
    Par javanoiid dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 28/03/2008, 10h41
  3. Autopostback qui ferme une session
    Par Courgette17 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 06/02/2008, 10h48
  4. Le pc s'eteint quand on ferme une session
    Par werephilou dans le forum Windows XP
    Réponses: 2
    Dernier message: 06/09/2007, 15h54
  5. que se passe-t-il lorsqu'on ferme une application ?
    Par Mihalis dans le forum Delphi
    Réponses: 22
    Dernier message: 13/06/2007, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo