Sessions speichern

Guten Tag erstmal.

Ich stecke in den Anfängen zur Erstellung eines Member-Bereichs. Dazu will ich nach einem Login die UserID in einer session speichern. Klappt soweit auch ganz gut.

Jetzt habe ich aber folgendes festgestellt:
Wenn ich die Seite zum ersten Mal öffne erzeugt mir PHP alle Links mit $_GET Variabeln, obwohl im Browser Cookies aktiviert sind. Klicke ich dann auf weiter, so zeigt der Link richtigerweise keine $_GET Variabeln mehr an, weil anscheinend das Cookie gesetzt wurde.

Kann auf http://www.femswiss.com/test.php ausprobiert werden.

Hier der source:

<?php session_start();
if (!isset($\_SESSION['zaehler'])) { $\_SESSION['zaehler'] = 0; } else { $\_SESSION['zaehler']++; } echo("Hier gehts [weiter");echo($\_SESSION['zaehler']);?\>Funktioniert j...](test.php)

Lass es lieber so, dann geht es auch, wenn der user die cookies abblockt (wie ich z.b., ich habe drei cookies:w-w-w, google, meine hp;alles andere ist geblockt)

Hallo auch…

Jetzt habe ich aber folgendes festgestellt:
Wenn ich die Seite zum ersten Mal öffne erzeugt mir PHP alle
Links mit $_GET Variabeln, obwohl im Browser Cookies aktiviert
sind. Klicke ich dann auf weiter, so zeigt der Link
richtigerweise keine $_GET Variabeln mehr an, weil anscheinend
das Cookie gesetzt wurde.

Cookie?? Du setzt hier kein Cookie…
Beim ersten request weiss der Server noch nicht, dass er sich den Browser ansehen sollte… erst wenn die php-Datei aufgerufen wurde - also _nach_ dem Request des Clients wird die session gestartet… somit kann der Server beim ersten Aufruf noch nicht sagen, welche Session-Id dieser Browser erhalten hat. Erst beim nächsten Zugriff auf die Seite wird dem Server das dann klar.
Es macht übrigens keinen Unterschied, ob Du auf weiter klickst oder Du mit F5 die Seite neu lädst…

allerdings bin ich kein Session-Spezialist, deswegen kann ich Dir keine Garantie geben, dass das auch wirklich die 100% korrekte Lösung ist…

Lass es lieber so, dann geht es auch, wenn der user die
cookies abblockt (wie ich z.b., ich habe drei cookies:w-w-w,
google, meine hp;alles andere ist geblockt)

Es ist auf jeden Fall das Ziel, auch Sessions ohne Cookie zu ermöglichen. Mich wundert jedoch, dass dieses nicht schon beim ersten Laden der Seite gesetzt wird, obwohl ich Cookies aktiviert habe. PHP merkt das IMHO selbst und gibt dann keine £_GET Variable aus bei den Links.

Dies funktioniert grundsätzlich auch wie es soll, aber eben erst ab dem zweiten Mal.

Cookie?? Du setzt hier kein Cookie…

Ich meine mit session_start() wird automatisch ein Cookie erzeugt, bevor irgentwas html-mässiges geschrieben wird. Das heisst, ich habe schon beim ersten Click eine Session.

Kann session_start() kein Cookie erzeugen, dann (und nur dann!) wird bei jedem Link die SESSID als _$GET angehängt. Passiert alles automatisch, muss ich nichts weiter tun, als session_start auszufühhren.

Weshalb beim ersten Besuch auf der Seite, wenn die Session eröffnet wird die SESSID angehängt wird obwohl ich Cookies habe, das ist die Frage.

Grundsätzlich läuft ja alles, ich finde es einfach nicht logisch und dachte, vielleicht kennt ja einer hier dieses Phänomen.

Vielen Dank jedenfalls für deine Hilfe!

Cookie?? Du setzt hier kein Cookie…

Ich meine mit session_start() wird automatisch ein Cookie
erzeugt, bevor irgentwas html-mässiges geschrieben wird. Das
heisst, ich habe schon beim ersten Click eine Session.

Hast Du schon mal mit cookies gearbeitet?

  1. Seitenaufruf -> Cookie setzen.
    Wenn Du versuchst im gleichen Script den Cookieinhalt auszugeben funktionert es nicht
  2. Seitenaufruf -> Cookie ist gesetzt -> variable ist da.

Hast Du schon mal mit cookies gearbeitet?

  1. Seitenaufruf -> Cookie setzen.
    Wenn Du versuchst im gleichen Script den Cookieinhalt
    auszugeben funktionert es nicht
  2. Seitenaufruf -> Cookie ist gesetzt -> variable ist
    da.

Nein, habe ich nicht.
IMHO weiss ich aber beim 1. Aufruf, ob ich ein Cookie setzen konnte oder nicht.

Nein, habe ich nicht.
IMHO weiss ich aber beim 1. Aufruf, ob ich ein Cookie setzen
konnte oder nicht.

hmmm wie willst Du das denn überprüfen?

zu dem Zeitpunkt wo das cookie gelesen wird ist es jedenfalls noch nicht geschrieben, drum gehts beim ersten Aufruf auch nicht…