Ingo: Problem mit Sessions.

Hallo,

mein Problem ist es, das wenn beim Browser Cookies deaktiviert sind auch der Login meiner Seite nicht mehr funktioniert, was er aber eigentlich sollte da die sessionids ja auf dem Server gespeichert werden falls Cookies deaktiviert sind.
In der php.ini meines servers ist auch ein gültiger save_path für sessions angegeben..ich habe allerdings keinen Zugriff auf dieses Verzeichnis.
Egal, denn auch auf meinem eigenen Rechner ist ebenfalls ein gültiger Pfad gesetzt und trotzdem läuft es nicht.
Vielleicht hat ja wer nen lösungsansatz...

Ich geb ma nen bisschen Quellcode :
<?
session_start();
.
.
.
...am anfang jeder Datei

dann registrier ich einfach das passwort und den loginnamen in der erstend php datei mit:

session_register ('name');
session_register ('passwort');

weitergereicht wird die Sessionid über nen normalen link

<a href="referenzen.php?PHPSESSID=<?=$PHPSESSID?>">

tja und eigentlich funktioniert das ja auch wenn ich cookies aktiviert habe.

  1. Hio,

    Egal, denn auch auf meinem eigenen Rechner ist ebenfalls ein gültiger Pfad gesetzt und trotzdem läuft es nicht.

    tauchen deine Session-Dateien dort auf? Öffne einfach mal das Verzeichnis und prüfe das einfach mal.

    das müsste
    <a href="referenzen.php?PHPSESSID=<? print $session_id(); ?>"> heissen.

    wobei es besser ist entweder a.) den Namen der Session zu setzen oder b.) den per .ini gesetzten Namen auslesen.
    ... denn dein Beispiel würde bei mir nicht laufen, bei mir heisst per php.ini die Session-ID SessID.

    also z.b.

    <a href="referenzen.php?<?php print session_name()."=".session_id(); ?>">.

    oder wenn du den Namen setzen willst

    session_name("SessID");
    session_start();

    wichtig dabei zuerst den Namen setzen dann starten.

    gruss

    Thorsten

    1. Hi,

      1. PHP fügt den Namen und die ID der Session automatisch in jede href und als hidden in jedes Formular ein, dass den Server verlässt, wenn ein Fallback (also keine Cookies) detektiert wurde.

      2. Wenn Deine PHP-Version neuer 4.0.x ist, benutze nicht mehr die Funktionen session_register(), session_unregsiter(), session_decode(), session_encode() sondern schreib die zu ischernden Daten einfach in das Array $HTTP_SESSION_VARS[] bzw bei Versionen ab 4.2.x einfach in das superglobale Array $_SESSION. Diese Arrays werden nach erfolgreichem session_start() automatisch in der Session-Datei /tmp/sess_1234567890abcdef1234567890abcdef (Bsp.) gesichert.

      3. Von dort werden sie auch wiederhergestellt nach dem nächsten session_start().

      4. die Einstellung register_globals sollte auf off stehen in der php.ini

      5. Du solltest nicht mit automatischen Sessions arbeiten, wenn der Client keine Cookies unterstützt, sondern auf "Auth401" ausweichen und die php-Funktionen register_shutdown_function(), serialize($_SESSION), unserialize($_SESSION) und eine eigene Funktion zum Wegschreiben und eine zum Wiederherstellen der Daten in einer selbst gebauten Sessiondatei erstellen.

      Es gibt hier zwar Leute, die meinen, dass automatsiche Sessions auch ohne Cookies (also mit hidden-Fields und URi-Variablen) funktionieren würden...

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.
    2. Hi...

      also in der ini ist PHPSESSID eingetragen das habe ich schon beachtet   und so wie es in den Link eingetragen ist funktioniert es ja auch wenn cookies aktiviert sind das ist ja nicht das problem...
      aber danke trotzdem...
      sag ma kannst du mir hier kurz erklären warum man in jeder datei session_start ausführen muß obwohl man nicht eine neue session starten will sondern nur auf eine vorhandene zugreifen will und sich die id auch nicht ändert ???

      1. Hm jetzt verstehe ich gar nichts mehr  auf meinem localhost speichert er nun bei nich akzeptierten Cookies im richtigen Verzeichnis eine session.
        Bei dem Server wo ich die Dateien hochlade nicht, obwohl ein gültiger session.save_path in der ini besteht.