Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec les sessions...

..et le fameux "headers already sent..."

Sujet résolu
    10 juillet 2006 à 17:09:47

    Bonjour :)

    Voici le script que j'ai fait:
    <?php

    if(isset($_COOKIE['sid'])) {
            $sid = $_COOKIE['sid'];
            session_id($sid);
            session_start();
    } else {
            session_start(); // ligne 8
            $sid = session_id();
            setcookie('sid', $sid); // ligne 10
    }

    // ensuite: du code qui ne nous intéresse pas ici

    Quand je lance la page, j'ai les erreurs suivantes:

    Citation : Erreurs retrounées par PHP

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\(...)mapage.php:1) in C:\(...)mapage.php on line 8

    Warning
    : session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\(...)mapage.php:1) in C:\(...)mapage.php on line 8

    Warning: Cannot modify header information - headers already sent by (output started at C:\(...)mapage.php on line 10


    Il n'y a pourtant absolument rien avant le code PHP que je vous ai montré ci-dessus. :o

    Voici maintenant ce que me renvoit la même page avec la fonction headers_list() tout au début:

    Citation : fonction headers_list()

    array(1) {
    [0] => string(23) "Content-type: text/html"
    }


    Il y a donc bien un header qui est envoyé avant mes fonctions de session, mais pas par mon script (le navigateur peut-être ?) o_O

    Comment remédier à ce problème? D'où vient-il ?


    Merci d'avance pour votre aide :)
    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2006 à 17:10:57

      Salut,

      verifie si tu n'a aps un espace ou un saut de ligne avant ton ouverture de balise PHP.
      • Partager sur Facebook
      • Partager sur Twitter
      Mon profil Github - Zeste de Savoir, pour la beauté du zeste
        10 juillet 2006 à 17:11:49

        vérifie le début de ton fichier : n'y a-t-il pas un espace ou un retour a la ligne avant le <?php ???

        edit : grillé :euh:
        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2006 à 17:15:21

          Quelle rapidité o_O

          Bon et bien, même si j'ai mis en gras et souligné dans le premier post, je vais quand même répéter ;) :

          Il n'y a pourtant absolument rien avant le code PHP que je vous ai montré ci-dessus. :o

          Donc non, ça ne vient malheuresement pas de ça :p
          • Partager sur Facebook
          • Partager sur Twitter
            10 juillet 2006 à 17:16:26

            Pas de code html, mais un vilain espace, ca fait mal.
            Tu n'inclue pas ce fichier quelques part ? Si oui, regarde le fichier qui inclue celui là (err...), et regarde si y'a pas du html ou un espace avant.
            • Partager sur Facebook
            • Partager sur Twitter
            Mon profil Github - Zeste de Savoir, pour la beauté du zeste
              10 juillet 2006 à 17:18:46

              Et non, ce fichier n'est pas inclus. :(
              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2006 à 17:33:32

                Citation : Erreurs retrounées par PHP

                Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\(...)mapage.php:1) in C:\(...)mapage.php on line 8



                Mais c'est pas nous, c'est PHP qui le dit : il y a quelque chose sur la premiere ligne de ton fichier qui est envoyé au navigateur !
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2006 à 18:29:35

                  Oui, mais tu le vois dans mon script: rien n'est envoyé au navigateur à la ligne 1.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    10 juillet 2006 à 18:42:46

                    Regarde bien dans ton editeur de code.
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Mon profil Github - Zeste de Savoir, pour la beauté du zeste
                      10 juillet 2006 à 19:02:05

                      J'ai fait directement un copier-coller de mon code pour l'afficher dans mon premier post, donc de toute façon ça se verrait...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2006 à 20:04:57

                        on ne peut rien affirmer sur la foi d'un c/c... a la rigueur si tu nous donnait le fichier...

                        de toute façon, un ordinateur ne fait pas d'erreur, ce sont les humains qui en font, alors si ton fichier est correct, vérifie que c'est le bon :)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 juillet 2006 à 21:12:07

                          Effectivement, l'erreur se situe très souvent du côté humain.

                          Je ne dispose malheusement pas de serveur distant, comme puis-je transmettre mon fichier ? Cependant j'insiste: il s'agit d'un copier-coller pur et simple, sans modications particulières.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 juillet 2006 à 10:41:36

                            Je viens de tester le script sur un serveur distant, et tout semble, en fait, fonctionner pour le mieux o_O

                            je ne comprends pas trop pourquoi ça ne marche pas en local... mais bon :D

                            Problème résolu :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              11 juillet 2006 à 11:06:42

                              <?php
                              session_start();

                              if(isset($_COOKIE['sid'])) {
                                      $sid = $_COOKIE['sid'];
                                      session_id($sid);
                              } else {
                                      $sid = session_id();
                                      setcookie('sid', $sid); // ligne 10
                              }

                              // ensuite: du code qui ne nous intéresse pas ici 


                              pas de setcookie apres du code ...
                              Je n'est jamais trouvé comment faire fonctioner un setcookie dans un else ... :(

                              ++
                              • Partager sur Facebook
                              • Partager sur Twitter
                                11 juillet 2006 à 12:23:29

                                Non, toujours les mêmes erreurs.

                                De plus:

                                Citation : php.net

                                Si id est fourni, il remplacera l'identifiant courant de session. session_id() doit alors être appelé avant session_start().



                                Edit
                                : apeller un setcookie() dans un else ne pose aucun problème, il me semble...
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  11 juillet 2006 à 12:30:15

                                  NE pas utiliser session_id après session_start, certes, mais ca marche dans le cas de session_regenerate_id :)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Mon profil Github - Zeste de Savoir, pour la beauté du zeste

                                  Problème avec les sessions...

                                  × 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