Php probleme avec mes sessions

Résolu
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. Contributeur
    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
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. désolé pour les fautes je tape trop vite et me relis pas je vais faire attention
                  0