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 :

Probleme avec session start


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par défaut Probleme avec session start
    Bonjour,

    j'ai une page principale qui contient plusieurs include (1 pour l'entête, une pour le pieds de page une pour le corps principale...etc)

    le fichier inclus pour le corps principal varie en fonction de la navigation sur le site (je suis pour le moment en local). Ainsi lorsque l'utilisateur clique sur une certain lien particulier, la page principale (que j'appellerai index.php) se recharge avec et "inclus" la page principale1.php.

    A ce moment j'ai besoin de récuperer des valeur de session avec des redirections (header).

    J'ai bien un en premiere ligne de la page index.php mais si j'appelle la page principale1.php j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\analyses\index.php:145) in C:\wamp\www\analyses\principale1.php on line 6
    Voici le debut du code de ma page principale1.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    // Redirige l'utilisateur s'il est déjà identifié
    if(isset($_SESSION["ID_UTILISATEUR"]))
    {
         header('Location: form_inscription_stage.php');
    }
    else
    {
    je ne sais pas m'en sortir pour gérer ce problème de session_start(); avec des include de tous les cotés

    Merci pur votre aide

  2. #2
    Membre confirmé Avatar de Attrox
    Profil pro
    Concepteur
    Inscrit en
    Mars 2009
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Concepteur

    Informations forums :
    Inscription : Mars 2009
    Messages : 119
    Par défaut
    L'utilisation de session start ou d'un header doit se faire avant tout code html, si tu inclues une page qui a du code html avant de démarrer ta session sa plante.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par défaut
    J'avais bien vu cette contrainte, mais je ne sais pas comment faire car tout le squelette de mon site est basé sur ce index.php qui contient des styles des div ...etc

    Voici le code (j'ai volontairement abrégé les styles afin que ce ne soit pas trop long):
    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
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans nom</title>
    <style type="text/css"> 
    <!-- 
    body  {
     
    margin: 0; /* il est conseillé de mettre à zéro la marge et le remplissage de l'élément body, pour tenir compte des différentes valeurs par défaut des navigateurs */
    	padding: 0;
    	text-align: center; /* ce paramétrage centre le conteneur dans les navigateurs IE 5.x. Le texte est ensuite aligné à gauche (valeur par défaut) dans le sélecteur #container */
    	color:#669;
     
    }
    </head>
     
    <body class="twoColFixLtHdr">
     
    <div id="container">
      <div id="header">
      	  <?php
     include("haut.php");
        ?>
    </div>
      <div id="sidebar">
     
       <div id="sidebar1">
        	<?php
     
        	include("sidebar1.php");
        	?>
    </div>     
     
     
      <div id="sidebar2">
     	<?php
        	include("sidebar2.php");
        	?>
    </div> 
    </div>
      <div id="mainContent">
        		  <?php
     
    		include("principale1.php");
        	?>
    </div>
    <br class="clearfloat" />
      <div id="footer">
        <div id="ssfooter1">
         	<?php
        	include("ssfooter1.php");
        	?>
    </div>
     
      <div id="ssfooter2">
        	<?php
        	include("ssfooter2.php");
        	?>
    </div>
         <div id="ssfooter3">
        	<?php
        	include("ssfooter3.php");
        	?>
    </div>
     
    </div>
    </div>
    </body>
    </html>
    Donc quand j'inclus principale1.php y' a forcemment de l'html avant

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par défaut
    Je ne vois toujours comment résoudre mon problème
    :

    J'ai simplifié ma page index.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    include("haut.php");
    include("sidebar1.php");
    include("sidebar2.php");
    include("principale1.php");
    include("ssfooter1.php");
    include("ssfooter2.php");
    include("ssfooter3.php");
    ?>
    le début du code de ma page principale1.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php session_start(); ?>
    <?php
    // Redirige l'utilisateur s'il est déjà identifié
    if(isset($_SESSION["ID_UTILISATEUR"]))
    {
         header('Location: form_inscription_stage.php');
    }
     
    else
    {
    Et j'ai toujours l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\analyses\sidebar1.php:96) in C:\wamp\www\analyses\inscription_stage.php on line 1
     
    Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\analyses\sidebar1.php:96) in C:\wamp\www\analyses\inscription_stage.php on line 6
    Si je supprime sidebar1.php, cela fonctionne, mais......j'en ai besoin

    Comment puis-je faire ?

    Pas de réponse ?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par défaut
    et si je met le session_start() dans la page index.php genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php session_start();
    include("haut.php");
    include("sidebar1.php");
    include("sidebar2.php");
    include("inscription_stage.php");
    include("ssfooter1.php");
    include("ssfooter2.php");
    include("ssfooter3.php");
    ?>
    j'ai quand même l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\analyses\sidebar1.php:96) in C:\wamp\www\analyses\inscription_stage.php on line 5

  6. #6
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    output started at C:\wamp\www\analyses\sidebar1.php:96
    Tu fais des affichages dans ce fichier ?
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 324
    Par défaut
    sabotage, j'ai oublié de préciser que j'ai simplifié le code pour illustrer le problème. en fait le include("principale1.php"); peut renvoyer différentes pages en fonction de la navigation de l'utilisateur, donc je ne peux pas mettre le code que tu me présentes sur la page index.php

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La réponse t'a déjà été donné : les operations de header() et le session_start() doivent avoir lieu avant tout envoi HTML.

    On peut utiliser les fonctions de bufferisation pour arranger cela (http://fr3.php.net/manual/fr/book.outcontrol.php) mais dans ton cas une simple organisation du code doit suffir :

    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
    <?php
    session_start();
    if(isset($_SESSION["ID_UTILISATEUR"]))
    {
         header('Location: form_inscription_stage.php');
    }
    else
    {
    include("haut.php");
    include("sidebar1.php");
    include("sidebar2.php");
    include("principale1.php");
    include("ssfooter1.php");
    include("ssfooter2.php");
    include("ssfooter3.php");
    ?>
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Probleme de session start
    Par wperle dans le forum Langage
    Réponses: 1
    Dernier message: 10/12/2009, 15h30
  2. Probleme avec Process.Start
    Par lucyole dans le forum VB.NET
    Réponses: 4
    Dernier message: 03/01/2008, 18h42
  3. probleme avec session
    Par aserty dans le forum Langage
    Réponses: 8
    Dernier message: 10/09/2006, 12h24
  4. Probleme avec session à partir de la 2eme page
    Par arti2004 dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2006, 03h59
  5. UTF-8 - Probleme avec sessions !
    Par atovik dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2006, 12h04

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