Php probleme avec mes sessions

Résolu
jupiter -  
 jupiter -
Bonjour,

j utilise des sessions pour l authentification sur mon site mon souci est que quand j ajoute mon code de protection sur la page que je veux protéger comme ci dessous (le session start est tout en haut aucun code avant)

session_start();
if (session_is_registered("authentification")){
}
else {
echo "<script language=\"JavaScript\">\n";
echo "window.location.href = 'index2.php'";
echo "</script>";
}

il me met ça sur la page qui s affiche :

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at W:\var\www\ipv\inc\connexion.php:7) in W:\var\www\body.php on line 2

j me susi dit la session est deja active du coup j ai enlevé le session start et la bine sur ca ne marche plus ....

avez vous une idée pourquoi ?

Merci
Configuration: Windows Vista
Firefox 3.0.13

8 réponses

  1. Passarinho44 Messages postés 977 Statut Contributeur 132
     
    Il faut que tu fasses attention à ce que ton session_start(); soit bien avant tout autre code!
    Même avant la balise <html>

    Il faut que ta première ligne de ton fichier php soit : <?php session_start(); ?>
    Si ce n'est pas le cas, le problème peut venir de là.

    0
  2. le père
     
    Bonjour

    Il n'est ni nécessaire ni suffisant que la première ligne soit <?php session_start(); ?>
    Par contre, visiblement, le code que tu montres est celui du fichier body.php qui est inclus dans le fichier connexion.php (ou ils sont tous les deux inclus dans un autre fichier) et tu as déjà sorti quelque chose à la ligne 7 de connexion.php
    Peux-tu montrer le début de connexion.php ?
    0
  3. jupiter
     
    merci pour vos réponses

    pour Passarinho44 le session start était bien tout en haut

    pour le père le body.php est bien inclus dans un autre fichier celui ci

    <?php
    include 'inc/config.php';
    include 'inc/connexion.php';
    include("header.php");
    include("menu.php");
    include("body.php");
    include("footer.php"); ?>

    et voici le connexion.php :

    <?php
    // paramètres de connexion
    $hostname_dbprotect = "localhost";
    $database_dbprotect = "test";
    $username_dbprotect = "root";
    $password_dbprotect = "";
    $dbprotect = mysql_pconnect($hostname_dbprotect, $username_dbprotect, $password_dbprotect) or trigger_error(mysql_error(),E_USER_ERROR);
    ?>
    0
  4. le père
     
    la ligne 7 correspond à ton mysql_pconnect. Bizarre que tu ne voies pas de message d'erreur.
    C'est peut-être aussi un caractère après le ?> en fin de connexion.php. Pour le vérifier, enlève le ?> à la fin de connexion.php (il n'est pas obligatoire, même si on voit tout le monde le mettre systématiquement)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jupiter
     
    tres bizarr je vire mon connexion.php effectivement ca amrche et voila maintenant mon message

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at W:\var\www\header.php:12) in W:\var\www\body.php on line 2

    voici mon header

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN"
    "http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd">
    <html Xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>test</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div id="page">
    <div id="top">
    <div id="header">
    <h1>test</h1></div>
    </div>
    0
  7. le père
     
    Tres bizarr je vire mon connexion.php effectivement ca amrche.
    Remets le
    Enlève le session_start de ton body.php et remets-le au début du fichier qui contient tous les include (juste après le <?php
    Car là où tu l'as mis, il y a plein de choses d'envoyées au client avant.
    0
  8. jupiter
     
    voila ce que j ai fait c ets mon fichier qui contient mon body.php et toujours le meme message avec le header.php ligne 12 :

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at W:\var\www\header.php:12) in W:\var\www\body.php on line 2

    le script :

    <?php
    session_start();
    include 'inc/config.php';
    include 'inc/connexion.php';
    include("header.php");
    include("menu.php");
    include("body.php");
    include("footer.php"); ?>
    0
  9. jupiter
     
    désolé pour les fautes je tape trop vite et me relis pas je vais faire attention
    0