-Valentin-: Überprüfung der Sessions-Konstante SID

Einen wunderschönen Freitagmittag! :-)

Ich habe Probleme bei der Überprüfung der Sessions-Kontante SID. Und zwar möchte ich das Skript abbrechen, wenn Session-Cookies nicht akzeptiert werden.
Am besten zeige ich erst einmal den relevanten Quelltext.

// Nehme notwendige Änderungen an den PHP-Konfigurationsdaten vor
ini_set('session.use_cookies', '1');
ini_set('session.use_only_cookies', '1');
ini_set('session.use_trans_sid', '0');

session_start();
if (SID != "")
{
    die("Bitte stellen Sie zu Ihrer eigenen Sicherheit Ihren Browser so ein, dass er (Session-)Cookies akzeptiert.");
}

Das Problem ist nun, dass, wenn man die entsprechende Seite zum ersten Mal aufruft, komischerweise die Kontante SID einen String enthält und demnach auch das Skript abgebrochen wird, obwohl (Session-)Cookies akzeptiert werden. Das Sonderbare: Wenn man auf F5 drückt oder auch die Seite wechselt und später nochmal wiederkehrt, dann wird sie normal angezeigt!? Die Konstante SID müsste doch eigentlich laut PHP Handbuch zu jedem Zeitpunkt leer sein, sofern die Session-ID in einem Cookie gespeichert werden kann.
Wie lässt sich das Problem beheben?

  1. hi,

    Das Problem ist nun, dass, wenn man die entsprechende Seite zum ersten Mal aufruft, komischerweise die Kontante SID einen String enthält und demnach auch das Skript abgebrochen wird, obwohl (Session-)Cookies akzeptiert werden.

    Ob dieser Cookie vom Client akzeptiert wurde, kann PHP beim ersten Request noch gar nicht wissen.

    Die Konstante SID müsste doch eigentlich laut PHP Handbuch zu jedem Zeitpunkt leer sein, sofern die Session-ID in einem Cookie gespeichert werden kann.

    Sie wird ab dem Zeitpunkt leer gelassen, bo dem PHP von diesem Umstand Kenntnis haben _kann_.

    Wie lässt sich das Problem beheben?

    So jedenfalls nicht.

    Man könnte vielleicht einen Redirect einbauen, über den man dem Script per Parameter mitteilt, dass gerade versucht wurde, die Session-ID in einem Cookie zu hinterlegen.
    Wenn dann vom Client kein solcher Cookie übermittelt wurde, kann man daraus seine Schlüsse ziehen. Natürlich nur halbwegs zuverlässig - denn dass die Ressource von einem Client "einfach so" _mit_ besagtem Parameter aufgerufen wird, kann natürlich auch nicht ausgeschlossen werden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hello,

      Man könnte vielleicht einen Redirect einbauen, über den man dem Script per Parameter mitteilt, dass gerade versucht wurde, die Session-ID in einem Cookie zu hinterlegen.
      Wenn dann vom Client kein solcher Cookie übermittelt wurde, kann man daraus seine Schlüsse ziehen. Natürlich nur halbwegs zuverlässig - denn dass die Ressource von einem Client "einfach so" _mit_ besagtem Parameter aufgerufen wird, kann natürlich auch nicht ausgeschlossen werden.

      Das funktioniert sogar recht zuverlässig, aber auch wieder nur dann, wenn man verhindert, dass eine Endlosschleife (Requestr-Response-...) entsteht.

      Wenn SID existiert, die Konstante aber leer ist, wurde eine Session neu begonnen oder wieder aufgegriffen. Zu berücksichtigen sidn aber die Einstellungen in der INI-Datei.

      session.use_cookies
      session.use_only_cookies
      session.use_trans_sid

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau