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 21/11/2007, 20h35   #1
Invité de passage
 
Inscription : février 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 11
Points : 2
Points : 2
Envoyer un message via MSN à lofo7
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 :
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
lofo7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 21h21   #2
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 835
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 835
Points : 3 468
Points : 3 468
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 :
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 :
1
2
3
4
5
6
<?php
    require_once 'configuration.php' ;
    require_once 'functions.php' ;
    session_start( ) ;
    // ...
?>
Ex de phtml/header.phtml :

__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 21h28   #3
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
il suffit de le mettre tout en haut du fichier :
Code :
1
2
3
4
5
6
<?php
session_start();
?>
<html>
...
</html>
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 21h43   #4
Invité de passage
 
Inscription : février 2006
Messages : 11
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 11
Points : 2
Points : 2
Envoyer un message via MSN à lofo7
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 :
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
lofo7 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 23h24   #5
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 835
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

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

Informations forums :
Inscription : mars 2005
Messages : 2 835
Points : 3 468
Points : 3 468
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

Citation:
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
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h17.


 
 
 
 
Partenaires

Hébergement Web