ccc: Session

Hallo,

ich starte eine Session ganz normal mit start_session(), am Anfang meines Dokumentes. Egal was ich mit (in) der Session mache, das funktioniert alles, Daten in Session speichern usw. Nur eines Funktioniert nicht.

Warning: Cannot send session cache limiter - headers already sent ...

ich bekommen immer diese Fehlermeldung ausgeben, Wenn ich die Seite zum ersten mal aufrufe kommt dies 2x wenn ich einen link betätige steht es nur noch 1x da.

mfg

(der Link führt zu der Datei mit dem Problem)

  1. Hallo ccc,

    Warning: Cannot send session cache limiter - headers already sent ...
    ich bekommen immer diese Fehlermeldung ausgeben, Wenn ich die Seite zum ersten mal aufrufe kommt dies 2x wenn ich einen link betätige steht es nur noch 1x da.

    warum die Meldung zweimal kommt, weiß ich nicht, aber ich vermute mal, dass du vor deinem session_start() schon irgendwas zum Browser schickst.

    (der Link führt zu der Datei mit dem Problem)

    wie man im Posting einen Link setzt steht in </faq/#Q-19> - interessanter wäre aber wäre der Quelltext.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo,

      also hier der Quelltext:

      ############################################################

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
      <head>
      <?
      session_start();
      include("menue.php");
      ?>
      <title><? echo $name; ?></title>
      <link rel="stylesheet" href="../files/styles.css" type="text/css">
      </head>
      <body class="sb">
      <table border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="15"></td>
          <td valign="top" width="155" nowrap><br>
              <? echo $menue ?>
          </td>
        </tr>
      </table>
      </body>
      </html>

      ############################################################

      Und von der Include Datei:

      ############################################################

      <?php
      $Seite = $HTTP_GET_VARS["Seite"];
      $Hilfe = $HTTP_GET_VARS["Hilfe"];
      $Informationen = $HTTP_GET_VARS["Informationen"];

      if (empty($Seite))
      {
          $Seite = "page_menue";
      }

      $menue = "  <ul>
                      <li type="square"><span class="text"><a href="".$Seite.".php">Home</a></span> </li>
                  ";
      if ($Informationen=="0" || $Informationen=="")
      {

      $menue .= " </span></li>
                      <li type="square"><span class="text"><a href="".$Seite.".php?Informationen=";
          if($Informationen=="" && session_is_registered("Informationen"))
          {
              $menue.= "0";
          }
          else
          {
              $menue.="1";
          }
          $menue .= "">Informationen</a>
                  ";
          if ($Informationen=="0")
          {
              session_unregister("Informationen");
          }
      }
      if ($Informationen=="1" || session_is_registered("Informationen"))
      {
          if ($Informationen!="")
          {
              $menue .= " </span></li>
                          <li type="square"><span class="text"><a href="".$Seite.".php?Informationen=0">Informationen</a>
                      ";
          }
          if(!session_is_registered("Informationen")) session_register("Informationen");
          $menue .= " <br>
                          ° <a href="index.htm" class="subm">"Story"</a> <br>
                          ° <a href="index.htm" class="subm">Danksagung</a>
                  ";
      }
      if ($Hilfe=="0" || $Hilfe=="")
      {

      $menue .= " </span></li>
                      <li type="square"><span class="text"><a href="".$Seite.".php?Hilfe=";
          if($Hilfe=="" && session_is_registered("Hilfe"))
          {
              $menue.= "0";
          }
          else
          {
              $menue.="1";
          }
          $menue .= "">Hilfe</a>
                  ";
          if ($Hilfe=="0")
          {
              session_unregister("Hilfe");
          }
      }
      if ($Hilfe=="1" || session_is_registered("Hilfe"))
      {
          if ($Hilfe!="")
          {
              $menue .= " </span></li>
                          <li type="square"><span class="text"><a href="".$Seite.".php?Hilfe=0">Hilfe</a>
                      ";
          }
          if(!session_is_registered("Hilfe")) session_register("Hilfe");
          $menue .= " <br>
                          ° <a href="faq.php" class="subm">FAQ</a><br>
                          ° <a href="index.htm" class="subm">Anzeige</a><br>
                          ° <a href="index.htm" class="subm">Schiffe</a><br>
                          ° <a href="index.htm" class="subm">Waffen</a><br>
                          ° <a href="index.htm" class="subm">Chat</a><br>
                          ° <a href="index.htm" class="subm">Steuerung</a>
                  ";
      }
      $menue .= "     </span></li>
                      <li type="square"><span class="text"><a href="beispielseite.htm">eMail</a></span></li>
                      <li type="square"><span class="text"><a href="beispielseite.htm">Anmeldung</a></span></li>
                  </ul>
                  <ul>
                      <li type="square"><span class="text"><a href="beispielseite.htm">Einloggen</a></span></li>
                  </ul>
      ";
      ?>

      ############################################################

      (Ich weiß, der Code ist nicht chick, aber er funzt *fast*)

      thx

      1. Hallo,

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <?
        session_start();
        include("menue.php");
        ?>

        [jede Menge unwichtigen Code gelöscht]

        In der 1.Zeile wird schon der Header gesendet, da dort schon Text für den Browser steht. Das session_start() muss noch davor.
        Gruß,
        Henning

      2. Hallo ccc,

        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <head>
        <?
        session_start();

        da habe wir es ja schon:
        <zitat src="http://de.php.net/session_start">
        Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird.
        </zitat>
        ich gehe mal davon aus, dass session.use_cookies bei dir nicht auf 0 steht.
        Abhilfe: setz den php-Bereich einfach vor das <!DOCTYPE...

        <title><? echo $name; ?></title>

        du weißt, dass du von short_open_tag=on abhängig bist?

        $Seite = $HTTP_GET_VARS["Seite"];
        $Hilfe = $HTTP_GET_VARS["Hilfe"];

        warum nicht $_GET['...']?

        $menue = "  <ul>
                        <li type="square"><span class="text"><a href="".$Seite.".php">Home</a></span> </li>

        tu dir einen Gefallen und verwende zum Begrenzen von Strings einfache Anführungszeichen - 1. musst du die Doppelten innerhalb des Strings nicht mehr maskieren, und 2. ist es schneller.

        if(!session_is_registered("Informationen")) session_register("Informationen");

        die Funktion session_register ist veraltet nimm $_SESSION['Informationen'] = $Informationen; (siehe http://de2.php.net/session_register)

        (Ich weiß, der Code ist nicht chick,

        "nicht chick" ist noch vornehm ausgedrückt :-) *scnr*

        aber er funzt *fast*)

        er funktioniert höchstens (fast) - furzen wird er hoffentlich nicht :-) *scnr*

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. Hallo,

          ich danke dir Tobias für die Überarbeitung des Codes, und besonders aber für die Jokes, die du am Ende eingebaut hast, bei der Hitze genau das richtige.

          Ich werde die Sachen bereinigen.

          mfg
          ccc