Sessions - woran liegt es?
chichi
- php
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
Hallo!
Wie sieht denn der Quelltext aus?
Nico
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
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
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
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.
Hallo!
Ich hab mich registriert und diese eichen auch als Zitatzeichen eingestellt. Das ist doch das von [Alt Gr]+[<], oder?
Nico
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
Achso... Jetzt hab ichs geschnallt.
Danke
Nico
danke euch beiden. ich werde mal das alles nach neuen regeln umprogrammieren.
chichi *wolltenachhause-bleibtaberundmachtsfertig*
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.
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.