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 :

Positionnement de session_start


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Par défaut Positionnement de session_start
    Bonjour,
    j'ai une erreur avec une session. Lorsque j'accède à ma page 'index.php' qui permet de me loguer, j'obtiens cette eruuer ci :

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at d:\www\evadtoi.fr\htdocs\essai2\entete.htm:19) in d:\www\evadtoi.fr\htdocs\essai2\index.php on line 22

    Bref, c'est une erreur classique, qui me dit que je dois mettre session_start() au tout début sans ligne de code avant. Ca ok mais je ne vois pas comment faire dans mon cas.

    En fait, pour faire simple, j'ai une page en PHP (dont voici le code) qui appelle d'autres pages, 'une page entete.htm', une page 'piedepage.htm', une page 'menu_ficheartiste.htm' qui sont trois pages qui reste identiques sur tout le site. Et j'ai donc l'appel de ma page centrale qui elle change (entre les ***********)

    (je n'ai pas tout copié ici, ça serait 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
     
    <body text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
    <br>
     
    						<!-- DEBUT ENTETE -->
    <div class="entete" >
    <?php 
     
      include('entete.htm');  // Appel de l'entete du site
    ?>
    </div>
    						  <!-- FIN ENTETE -->
     
                              <!-- DEBUT MENU GAUCHE -->
    <div class="menu">
    <?php 
      include('menu_ficheartiste.htm');  // Appel du menu
    ?>
    </div>
                              <!-- FIN MENU GAUCHE -->
     
    *****************************************************
    <div class="centre">
    <?php
     
      // On définit le tableau contenant les pages autorisées
      // ----------------------------------------------------
      $pageOK = array('bas' => 'bas.php',
     				  'config' => 'config.php',
      				  'fonctions' => 'fonctions.php',
    				  'haut' => 'haut.php',
    				  'index' => 'index.php',
    				  'inscription' => 'inscription.php',
    				  'login' => 'login.php',
    				  'logout' => 'logout.php',
    				  'perdu' => 'perdu.php',
    				  'perdu2' => 'perdu2.php',
    				  'profil2' => 'profil2.php',
    				  'profil' => 'profil.php',
    				  'verification' => 'verification.php',
    				  'verifications' => 'verifications.php',);
     
     
      // On teste que le paramètre d'url existe et qu'il est bien autorisé
      // -----------------------------------------------------------------
      if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
        include($pageOK[$_GET['page']]);   // Appel du contenu central de la page
      } else {
        include('index.php');   // Page par défaut quant elle n'existe pas dans le tableau
      }
     
    ?>
    </div>                             
    *****************************************************  
     
                              <!-- DEBUT PIED DE PAGE -->
    <div class="pieddepage">
    <?php 
      include('pieddepage.htm');   // Appel du pied de page
    ?>
                              <!-- FIN PIED DE PAGE -->
    </div>
    </body>
    </html>
    Le problème est que c'est entre ces *** qu'intervient le session_start();

    Et comme vous pouvez le voir, il y a du code avant. Je dois sûrement le placer sur cette page mais où ? Alors où dois-je placer le session_start(); pour ne plus voir cette erreur. Avant début entête ?

    Merci pour vos réponses
    Max

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    Ton en-tête est, je pense, une en-tête HTML. Il faudrait une en-tête dédiée à PHP. Cette dernière devra être incluse avant tout envoi de HTML.
    Typiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
        require_once 'inc/header.php' ;
        // Récupérer des données
        // etc.
        // Ensuite on ne fera que de l'affichage :
    ?>
    <?php require 'phtml/header.phtml' ?>
    Ma page...
    <?php require 'phtml/footer.phtml' ?>
    Ex de inc/header.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
        require_once 'configuration.php' ;
        require_once 'functions.php' ;
        session_start( ) ;
        // ...
    ?>
    Ex de phtml/header.phtml :


  3. #3
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 710
    Par défaut
    il suffit de le mettre tout en haut du fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    ?>
    <html>
    ...
    </html>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 25
    Par défaut
    J'ai fait la solution la plus rapide, c'est-à-dire celle de Mathieu et ça à l'air de fonctionner mais j'ai une question.

    Mon fichier 'logout.php' qui me permet de me déconnecter et qui contient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    session_start();
    session_unset();
    session_destroy();
    header('Location:index.php');
    ?>
    dois-je laisser le session_start(); ? Si je le laisse, ça m'apportera sûrement une erreur mais si j'enlève est-ce que ça marchera quand même ?

    Merci pour vos deux réponses.

    Max

    EDIT : non j'ai un problème, un nouveau message d'erreur. Et c'est le seul, il arrive pour la déconnection.

    Warning: session_destroy(): Trying to destroy uninitialized session in d:\www\evadtoi.fr\htdocs\membres\logout.php on line 23

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par lofo7 Voir le message
    J'ai fait la solution la plus rapide, c'est-à-dire celle de Mathieu
    Au final c'est la même chose hein

    EDIT : non j'ai un problème, un nouveau message d'erreur. Et c'est le seul, il arrive pour la déconnection.

    Warning: session_destroy(): Trying to destroy uninitialized session in d:\www\evadtoi.fr\htdocs\membres\logout.php on line 23
    Trying to destroy uninitialized session => Essaie de détruire une session non initialisée

Discussions similaires

  1. Déplacement ou positionnement d'une fenêtre
    Par agl dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/11/2003, 10h29
  2. positionnement curseur et code ansi
    Par coach dans le forum C
    Réponses: 7
    Dernier message: 04/11/2003, 00h32
  3. LinCVS - Comment positionner CVSROOT ?
    Par sequentaire dans le forum Réseau
    Réponses: 3
    Dernier message: 10/07/2003, 07h53
  4. RichEdit tjs positionner le curseur en bas du texte
    Par microseb dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/05/2003, 18h48
  5. [TSynMemo] Positionnement par ligne et colonne
    Par Mercilius dans le forum Composants VCL
    Réponses: 9
    Dernier message: 16/04/2003, 17h22

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