Scooter: Sessionübergabe (session_id(), session_start())

Hi,

kann mir mal jemand das mit den Sessions erklären?

Also:
ich habe eine Seite, in der ich mit
session_start() eine Session anlege.
Wird dann schon automatisch ein Cookie mit der Session-ID angelegt, wenns erlaubt ist?

mit session_id() könnte ich ja dann die ID der soeben angelegte Session bekommen.

Dann kann ich eine Session-Variable anlegen. z.B. so: $_SESSION['var1'] = "test";

Soweit so gut.

Dann habe ich noch eine andere Seite, die auch mit session_start()beginnt.
Im MSIE (cookies aktiv) könnte ich dann einfach wieder auf $_SESSION['var1'] zugreifen. Das Cookie scheint also angelegt worden zu sein.

Unter Phoenix 0.5 klappt dies jedoch nicht so einfach.
Dort muss ich erst die Session-ID mittels session_id($_GET['sessionid']); bekommen, (sessionid wurde in der URL übergeben).

Irgendwie scheint Phoenix/Mozilla nicht nach dem Session-Cookie zu suchen, sondern es muss explizit gesagt werden, wie die Session-Id lautet.

Seh ich das richtig?
Habt ihr ne Lösung, wie ich die Session am besten anlege (z.B. wie überprüfe ich, ob Cookies aktiviert sind), und auch wieder auslese?

Ich hab da keine Erfahrung mit.

Gruß
Scooter

  1. ich habe eine Seite, in der ich mit
    session_start() eine Session anlege.
    Wird dann schon automatisch ein Cookie mit der Session-ID angelegt, wenns erlaubt ist?

    Ja. In der Antwort, also in den Daten, die Dein Skript sendet, wird das entsprechende Cookie mitgeliefert. Die Frage, ob das erlaubt ist oder nicht, wird übrigens alleine auf Browserseite entschieden. Der Server bekommt davon nichts mit, d.h. er bekommt keinerlei Vorabinformation, ob er Cookies senden darf oder nicht - er sendet grundsätzlich. Es obliegt dem Browser, die Cookies zu ignorieren.

    Dann habe ich noch eine andere Seite, die auch mit session_start()beginnt.
    Im MSIE (cookies aktiv) könnte ich dann einfach wieder auf $_SESSION['var1'] zugreifen. Das Cookie scheint also angelegt worden zu sein.

    "Könnte" oder "konnte"?

    Unter Phoenix 0.5 klappt dies jedoch nicht so einfach.
    Dort muss ich erst die Session-ID mittels session_id($_GET['sessionid']); bekommen, (sessionid wurde in der URL übergeben).

    Was macht die Sessionkennung in der URL? Falls das automatisch passiert, akzeptiert Dein Phoenix keine Cookies.

    Irgendwie scheint Phoenix/Mozilla nicht nach dem Session-Cookie zu suchen, sondern es muss explizit gesagt werden, wie die Session-Id lautet.

    Nein, das ist prinzipiell unmöglich/sinnlos, denn kein Browser weiß, daß er es gerade mit einem Session-Cookie zu tun hat. Die Browser empfangen einen Cookie, der irgendeinen Inhalt halt (hier: Sessionkennung) und für irgendeinen URL-Bereich (hier: Deine Domain) gültig ist. Beim nächsten Abruf von Daten aus diesem URL-Bereich werden stur sämtliche Cookies wieder an den Server gesendet, die für diesen URL-Bereich gültig sind. Darüber hinaus nehmen Browser keinerlei Analyse oder Verarbeitung von Cookies vor.

    Dein Problem muß also eine andere Ursache haben, dürfte aber durchaus mit den Browsern zu tun haben. Aktiviere bei solchen Problemem als erstes die Cookiewarnungen, damit Du siehst, ob überhaupt ein Cookie kommt und ob es gespeichert wird. Im Cookie-Manager findest Du die derzeit gültigen Cookies, dort sollte auch Dein Session-Cookie auftauchen.

    Es wäre sinnvoll, wenn Du die Adresse der betroffenen Seite(n) mitteilen könntest, damit andere das Problem nachvollziehen können.

    Gruß,
      soenk.e