PHP SESSION und der Sinn dahinter

lordg2009

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.552
Hi,

Bin gerade dabei mich mit sessions in PHP zu beschäftigen.
Lese da gerade den Abschnitt zum Übermitteln der session_ID. Aber wozu muss ich die denn überhaupt übermitteln? Eine session wird doch auch so dem Besucher der Seite zugeordnet und die Variablen in $_SESSION stehen doch auch nur dem Nutzer zur Verfügung, der die Verbindung hergestellt hat?
 
Über die Session_ID wird der benutzer ermittelt. Da HTTP ein zustandsloses Protokoll ist muss diE bei jeder Anfrage vom Client an den Server übertragen werden. Zu diesem Zweck muss die natürlich irgendwo beim Client gespeichert werden. Das kann ein Cookie sein oder auch ein unsichtbares Feld im Dokument.

Edit: Man ich bin echt der König der Typos ...
 
Und woher weißt du, welche Session welchem Nutzer gehört? Zufallsprinzip? Dazu benötigst du eben eine ID, die du eindeutig dem Nutzer zuordnen kannst. Die wird auch normalerweise immer in irgend einem Cookie gespeichert, was der Browser der aufgerufenen Seite immer mitgibt, damit du weißt, was alles in der Session vorhanden ist.
 
lordg2009 schrieb:
Aber wozu muss ich die denn überhaupt übermitteln? Eine session wird doch auch so dem Besucher der Seite zugeordnet

Falsch. Nur durch die übermittelte ID ist es Möglich die Session zuzuordnen. Allerdings macht PHP diese Übermittlung meist automatisch (indem beim Start der Session die Header für das Cookie erzeugt werden). Selber die ID übergeben muss man nur wenn dieser Automatismus nicht greift.
 
Na ich dachte, die wäre irgendwie an die IP gekoppelt, oder so.

Heißt das, dass wenn ich keine SessionID übermittel und trotzdem Sessions benutzt und mehrere Leute gleichzeitig meine Seite besuchen, jeder irgendeine Seission bekommt?
 
Ja, pro Session gibts eine ID. Eine Kopplung an die IP bringt dir überhaupt nichts, denn aus einem Haushalt können mehrere Computer auf der gleichen Seite eingeloggt sein. Firmen mit mehreren hundert Mitarbeitern jetzt mal ausgenommen... Ebenso kannst du mit jedem Browser eine eigene Session erstellen, selbst mit dem gleichen Browser im privaten Modus geht das wunderbar. Ergo muss das alles eigenständig sein und deshalb gibts IDs per Cookie.
 
Habe gerade im Browser nachgeschaut.
Auch wenn ich kein Cookie setzt, wird automatisch eines mit der SessionID erstellt.
Der Name ist PHPSESSID
Wie verhält sich dieser Sachverhalt, kann man das nutzen?
 
Wie nutze ich dann das ganze? Ein Vergleich von Cookie und sessionID vor jedem Seitenaufbau ala:

PHP:
<?php
if(session_id() == $_COOKIE['PHPSESSID'])
{
echo "welcome";
}
else
{
exit();
}
?>

Oder wie muss ich das jetzt verstehen?

Oder reicht ein einfaches
PHP:
session_start();
aus und er sucht sich das dann automatisch?
Ergänzung ()

Sorry für die dummen Fragen:
Habs ausprobiert und anscheinend wird bei session_start(); im header die alte session wieder aufgenommen;
Ergänzung ()

Danke euch, für die Hilfe
 
Du machst als aller Erstes (noch bevor du irgendwas Anderes machst) ein session_start und arbeitest dann ganz normal weiter. Alles, was beim vorherigen Seitenaufruf gesetzt war, wird nun an dem Punkt wieder aufgenommen und alles ist nun wie beim Beenden des letzten Requests. Wenn du eine komplett neue Session erstellen willst (beim Logout bspw.), nimmst du einfach session_destroy.
 
Zurück
Oben