Andreas Korthaus: Übergabe der Session ID???

Beitrag lesen

Hallo!

Hinzufügen eines Cookies, der ja bei jedem Seitenaufruf der passenden Domain  vom Client an den Server übertragen wird. Wenn Du jetzt session_start() aufrufst, sucht php nach dem Cookie und stellt die Verbindung zur passenden Sessiondatei in session_save_path (standard: /tmp/ würde ich aber verschieben auf /tmp/irgendwas/...) wieder her. Die Variablen $HTTP_SESSION_VARS werden in diesem Moment automatisch aus der Datei wieder hergestellt und beim Ende des Scriptes automatisch wieder dorthin gesichert. Wenn Du also etwas aufbewahren willst, brauchst Du es nur in eine $HTTP_SESSION_VARS["DeinName"] zu schreiben.

Benutze nicht mehr die alten Funktionen session_register() & CO.

Und benutze nicht mehr die alten Variablen $HTTP_*_VARS, die werden in absehbarer Zeit nicht mehr unterstützt! Dafür gibt es ja die neuen superglobals $_*, die auch in Funktionen... zur Verfügung stehen, die nur in alten PHP-Versionen nicht funktionieren.

Die zweite möglichkeit ist, dass php automatisch in deinem Formular Hidden-Fields und an jeden Link einen Datenbereich anhängt. Dort wird dann die Session-ID untergebracht und kann so von PHP beim Seitenaufruf ___aus einer solchen Sietwe heraus___ wiedergefunden werden. Wenn allerdings eine Deiner Seiten auf eine andere Art aufgerufen wird (
Vor- und Zurückbuttons im Browser,

bei mir geht das?!

Direktaufruf per Adresszeile,

das geht auch nur so lange mit Session-Cockies wie Du im selben Browserfenster innerhalb vor dem Timeout was manuelle eingibst. Wenn sowas gemacht wird ist IMHO etwas an der Internetseite falsch!

Favoriten oder Bookmarks...) dann fehlen diese Angaben ja.

genauso wie der Cockie nicht mehr erxistiert.

Die Seite würde dann ohne Session laufen oder, viel schlimmer, mit einer neuen. Die Methode phne Cockies ist daher ungeeignet für die Praxis.

Sehe ich genau anders. Ich finde den Fall-Back Mechanismus von PHP perfekt. Man muß nur sicherstellen das die Seite auch ohne Cockies wirklich funktioniert. Aber trans-sid ist dermaßen flexibel, man lkann die Session_ID sogar automatisiert in Javascript einbauen... Ich finde eine Lösung die Cookies vorschreibt ist oftmals nicht wirklich praxistauglich, kommt aber auf die Anwendung an.

Du musst sowieso vor jedem session_start() nachschauen, ob ein "Session-Cookie" da ist, mit Ausnahme des ersten session_start() natürlich. Wenn Du Sessions ausschließlicz mit Cookies benutzt, dann reicht es, auf Vorhandensein von $HTTP_COOKIE_VARS[SESSION_NAME] zu prüfen. SESSION_NAME ohne "" in den eckigen Klammern ist eine Konsante, die Du Dir baust und hinter der sich DEIN name für Sessions versteckt. Den stellst Du dann in jedem Script immer erst mit session_name(SESSION_NAME) ein, bevor du session_start() aufrufst. Alles Andere macht PHP dann für Dich.

Und wofür?

if (strlen($HTTP_COOKIE_VARS[SESSION_NAME])==32)

da reicht doch auch if($_SESSION), oder?

{
  session_name(SESSION_NAME);

das brauchst Du im Prinzip auch nicht, für diese Prüfung reicht IMHO

if($_SESSION){
    session_start();
}

oder steht $_SESSION erst nach session_start() zur Verfügung? Aber die Prüfung bringt IMHO eh nicht viel, da man so sehr leicht an eine Session kommt.

Grüße
andreas

PS: wenn Du den Namen brauchst nimm doch einfach session_name(), das gibt den aktuellen Namen zurück, also normalerweise PHPSESSID.