chichi: Sessions - woran liegt es?

Bekomme folgende Meldung beim Aufruf von Sessions:

Warning: Unknown(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

woran liegt es?

chiChi

  1. Hallo!

    Wie sieht denn der Quelltext aus?

    Nico

    1. so sieht der quelltext aus. hat eigentlich noch nie probleme bereitet.

      session_start();
      // Wenn der Datei eine Session ID übergeben wurde, dann diese reaktivieren
      if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );

      // Wenn folgende Variablen in der Session existieren dann diese reaktivieren
      if (session_is_registered("order")) session_register("order");
      if (session_is_registered("direction")) session_register("direction");
      if (session_is_registered("page")) session_register("page");

      // Gibt es diese Variablen noch nicht werden sie initialisiert oder erhalten den
      // Wert, der ihnen per HTTP_GET zugewiesen werden soll
      if ($order==NULL)     $order="datum";    else if ($HTTP_GET_VARS["order"]!=NULL)     $order=$HTTP_GET_VARS["order"];
      if ($direction==NULL) $direction="DESC"; else if ($HTTP_GET_VARS["direction"]!=NULL) $direction=$HTTP_GET_VARS["direction"];
      if (!(isset ($page))) $page=0;           else if (isset ($HTTP_GET_VARS["page"]))    $page=$HTTP_GET_VARS["page"];

      // Variablen werden neu in die Session geschrieben
      session_register("order","direction","page");

      das wars auch schon. hoffe es liegt nicht anm quelltext

      chichi

      1. hi,

        session_start();

        // Wenn der Datei eine Session ID übergeben wurde, dann diese reaktivieren
        if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );

        was soll das?
        das hat das vorhergehende session_start() bereits gemacht, wenn es eine session-ID vorgefunden hat.

        // Wenn folgende Variablen in der Session existieren dann diese reaktivieren
        if (session_is_registered("order")) session_register("order");
        if (session_is_registered("direction")) session_register("direction");
        if (session_is_registered("page")) session_register("page");

        was soll das?

        wenn die variablen schon in der session registriert sind, wozu willst du sie dann noch mal neu registrieren? (haben sich ihre werte außerhalb der session etwa geändert?)

        hoffe es liegt nicht anm quelltext

        unter welcher PHP-version setzt du das ein?

        das ist eigentlich hoffnungslos veraltet - session_register() sollte in aktuellen PHP-versionen nicht mehr genutzt werden, sondern das superglobale $_SESSION[].

        und HTTP_GET_VARS ist auch veraltet, $_GET ist die bevorzugte version.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo!

        |hoffe es liegt nicht anm quelltext
        Sieht nicht so aus (du hast doch die phptags uns blos vorenthalten, oder?). Aber die Zuweisung von Variablen in eine Session solltest du nicht mehr in der alten Variante machen. Besser ist $_SESSION['variable']=$irgendwas.

        Nico

        1. Hi Nico,

          |hoffe es liegt nicht anm quelltext

          Kannst du dich nicht mal an die Zitatzeichen des Forums halten? Bzw. registrier dich, dann kannst du | als Zitatzeichen auswählen.

          Sieht nicht so aus (du hast doch die phptags uns blos vorenthalten, oder?). Aber die Zuweisung von Variablen in eine Session solltest du nicht mehr in der alten Variante machen. Besser ist $_SESSION['variable']=$irgendwas.

          Wenn keine PHP Start-/Endtags enthalten wären, würde es wohl kaum zu einer Fehlermeldung des PHP Parsers kommen.

          MfG, Dennis.

          1. Hallo!

            Ich hab mich registriert und diese eichen auch als Zitatzeichen eingestellt. Das ist doch das von [Alt Gr]+[<], oder?

            Nico

            1. hi,

              Ich hab mich registriert und diese eichen auch als Zitatzeichen eingestellt. Das ist doch das von [Alt Gr]+[<], oder?

              du hast aber das leezeichen dahinter weggelöscht beim posten.

              kein zitat
              ein zitat

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Achso... Jetzt hab ichs geschnallt.
                Danke

                Nico

        2. danke euch beiden. ich werde mal das alles nach neuen regeln umprogrammieren.

          chichi *wolltenachhause-bleibtaberundmachtsfertig*

      3. Hi chichi,

        session_start();
        // Wenn der Datei eine Session ID übergeben wurde, dann diese reaktivieren
        if (isset ($HTTP_GET_VARS[session_name()])) session_id( ${session_name()} );

        <Zitat PHPManual session_id()> Wenn ID angegeben wird, wird die die aktuelle Session-ID ersetzt. session_id()  muss zu diesem Zweck vor session_start()  aufgerufen werden.</Zitat>

        Das wäre also schon mal ein Fehler. Außerdem solltest du die Superglobalen Arrays nutzen, in diesem Fall $_GET statt dem veralteten $HTTP_GET_VARS.

        Trotzdem tippe ich zusätzlich noch auf einen Konfigurationsfehler, eben wegen der Meldung mit Zeile 0.

        // Wenn folgende Variablen in der Session existieren dann diese reaktivieren
        if (session_is_registered("order")) session_register("order");
        if (session_is_registered("direction")) session_register("direction");
        if (session_is_registered("page")) session_register("page");

        Diese Technik ist auch schon etwas veraltet - du kannst alle Session Variablen über das Array $_SESSION abrufen. Abgesehen davon verstehe ich nicht ganz, was du hier machst - wenn die Variable X in der Session registriert wird, registrierst du sie nochma??

        Statt session_is_registert("foobar") kannst du auch isset($_SESSION['foobar']) verwenden.

        MfG, Dennis.

        --
        Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
        Sinnvolles Zitieren: Man zitiert nur Teilsätze des Vorposters auf die man sich bezieht! Nicht einfach alles.
  2. Hi chichi,

    Warning: Unknown(): The session id contains invalid characters, valid characters are only a-z, A-Z and 0-9 in Unknown on line 0

    Hast du eventuell versucht per session_name() einen Namen für die Session zu vergeben? Bzw., da PHP hier von Zeile 0 redet, könnte es auch eine Fehlkonfiguration sein. Hast du in der php.ini zufällig einen ungültigen Session Namen drin stehen und den Session Autostart aktiviert?

    Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0

    wird vermutlich ein Folgefehler von dem ersten Fehler sein - oder existiert der Ordner /tmp vielleicht gar nicht?

    MfG, Dennis.

    --
    Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:( mo:} zu:|
    Das Leben ist kein Warenhaus - es nimmt nichts zurück. (Anette Louisan)