Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur que je comprend pas ...

Warning: session_start(): Cannot send session cache limiter ... et Warning: Cannot modify header information ....

Sujet résolu
    5 juin 2006 à 12:45:03

    Bonjour

    alors voila mon petit problème je me suis créer un forum et je l'ai agrementer d'une petite zone membre (recuperer dans les comment faire du site lephpfacile)

    lorsque je veux m'inscrire sur mon forum lors de l'inscription quand je clique sur "inscription" (le bouton qui envoi le formulaire) lors du traitement de celui deux erreurs aparaissent ::

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\documents and settings\nxt.kosvocore\bureau\php\01 [forum]\zone_membres\inscription.php:2) in c:\documents and settings\nxt.kosvocore\bureau\php\01 [forum]\zone_membres\inscription.php on line 32

    Warning: Cannot modify header information - headers already sent by (output started at c:\documents and settings\nxt.kosvocore\bureau\php\01 [forum]\zone_membres\inscription.php:2) in c:\documents and settings\nxt.kosvocore\bureau\php\01 [forum]\zone_membres\inscription.php on line 34

    Je ne comprend pas ces erreurs ! Quelqu'un pourrait m'aider ?

    voici mon code ::



    <?php
    // on teste si le visiteur a soumis le formulaire
    if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
        // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
        if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
            // on teste les deux mots de passe
            if ($_POST['pass'] != $_POST['pass_confirm']) {
                $erreur = 'Les 2 mots de passe sont différents.';
            }
            else {
                $base = mysql_connect ('localhost', 'root', '');
                mysql_select_db ('nxt', $base);
               
                // on recherche si ce login est déjà utilisé par un autre membre
                $sql = 'SELECT count(*) FROM membre WHERE login="'.addslashes($_POST['login']).'"';
                $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                $data = mysql_fetch_array($req);

                if ($data[0] == 0) {
                           
                                    $login = htmlentities(addslashes($_POST['login']));
                                    $mot_de_passe = md5(addslashes($_POST['pass']));
                                    $email = htmlentities(addslashes($_POST['email']));
                                    $date_de_naissance = htmlentities(addslashes($_POST['date_de_naissance']));
                                    $timestamp_inscription = time();
                                    $statut = 1;
                           
                    $sql = 'INSERT INTO membre VALUES("", "'.$login.'", "'.$mot_de_passe.'", "'.$email.'", "'.$date_de_naissance.'", "'.$timestamp_inscription.'", "'.$statut.'", "")';
                    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

                    session_start(); // ligne 32 !! (erreur n°1)
                    $_SESSION['login'] = $_POST['login'];
                    header('Location: ../forums/index.php'); // ligne 34 !!
    (erreur n°2)
                    exit();
                }
                else {
                    $erreur = 'Un membre possède déjà ce login.';
                }
            }
        }
        else {
            $erreur = 'Au moins un des champs est vide.';
        }
    }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
            <head>
                    <title>inscription</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <link rel="stylesheet" type="text/css" media="all" title="Style de l'utilisateur" href="zone_membres.css" />
            </head>

            <body>
           
                    <p class="formulaire">
                   
                    <fieldset>
                    <legend>Inscription</legend>
                            <br />
                            <form action="inscription.php" method="post">
                                    <label>
                            <span class="label_input_speciale_2">[ CHOISSISEZ UN LOGIN ]</span>
                            <input class="deplace_3" type="text" name="login"><br />
                                    </label>
                                                    <br />       
                                    <label>
                            <span class="label_input_speciale_3">[ UN MOT DE PASSE ]</span>
                            <input class="deplace_4" type="password" name="pass"><br />
                                    </label>
                            <br />
                                    <label>
                            <span class="label_input_speciale_4">[ CONFIRMATION DU MOT DE PASSE ]</span>
                            <input class="deplace_5"  type="password" name="pass_confirm"><br />
                                    </label>
                            <br />
                                    <label>
                            <span class="label_input_speciale_4">[ VOTRE ADRESSE E-MAIL ]</span>
                            <input class="deplace_5"  type="text" name="email"><br />
                                    </label>
                            <br />
                                    <label>
                            <span class="label_input_speciale_4">[ VOTRE DATE DE NAISSANCE ]</span>
                            <input class="deplace_5"  type="text" name="date_de_naissance"><br />
                                    </label>
                            <br />
                            <br />
                            <input class="deplace_2" type="submit" name="inscription" value="Inscription">
                            <br />
                            <br />
                            <a href="index.php">annuler</a>
                            </form>
                    </fieldset>
                   
                    </p>

                    <p class="erreur">
    <?php

                            if (isset($erreur)) echo '<br />',$erreur;

    ?>
                    </p>
            </body>
    </html>






    Merci d'avance ...
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      5 juin 2006 à 12:47:27

      Il faut metre le session_start() avant tout autre code ;)
      • Partager sur Facebook
      • Partager sur Twitter
        5 juin 2006 à 12:47:29

        Oh les vilaines petites ligens html avant ton code !

        Pas de sortie HTM avant les session_start, header(), et autre set_cookie() -.-

        C'esr expliqué mille fois fois partout ou tu vas :p
        • Partager sur Facebook
        • Partager sur Twitter
        Mon profil Github - Zeste de Savoir, pour la beauté du zeste
          5 juin 2006 à 12:47:49

          header() et session_start() sont des fonctions qui doivent être appelées avant tout code html.
          Est considéré comme code html :
          - des espaces
          - des caractères écrits en brut ou via echo()
          Voilà :D
          • Partager sur Facebook
          • Partager sur Twitter
            5 juin 2006 à 12:50:23

            OHlala jsuis gener c'etait tout con :euh:


            :p Merci !!

            alala je crois qu'une pause s'impose lol


            Merci encore
            • Partager sur Facebook
            • Partager sur Twitter
              5 juin 2006 à 12:51:55

              Bonjour,

              Supprime les 2 sauts de ligne totalement inutiles avant le tag <?php : ils sont envoyés au navigateur AVANT le session_start() (ça fait comme un echo, ce sont des caractères), et comme il ne faut jamais rien afficher avant un session_start()... ^^

              Sinon, prends l'habitude de toujours mettre session_start() en tout début de code (juste après "<?php") :)
              • Partager sur Facebook
              • Partager sur Twitter

              Erreur que je comprend pas ...

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown