Chris: session_start (); ??

Beitrag lesen

Hallo,

Wer löscht bei einem LOGOUT was?

Du solltest nicht denselben Fehler machen, wie viele Andere vor Dir!

Sessions haben direkt nichts mit einem "Login" zu tun. Das gibt es bei HTTP sowieso nicht, wir nennen es nur immer wieder so :-)

Du kannst grundsätzlich eine Session starten.
Das ist lediglich ein Mechanismus, der es dem Server ermöglicht, den Client mit einer relativ hohen Wahrscheinlichkeit wiederzuerkennen. Single-Cookie-Sessions sind das beliebteste Mittel.

Wie funktioniert das?

Der Client ruft eine Seite am Server zum ersten mal auf, in der session_start() drinsteht. Nun schaut PHP nach, ob der Client einen passenden (Name muss stimmen) Cookie mitgeliefert hat. Hat der Client aber nicht. Daraufhin vergibt PHP eine Session-ID, zu der es noch keine Session-Datei auf der Platte gibt. Diese sendet sie mit der Antwort dem Client.

Wenn der Client nun den Cookie annimmt, wird er ihn beim nächsten Mal wieder mitsenden an den Server.

PHP schaut also wieder nch dem Cookie und findet einen mit dem voreingestellten Session-Namen. Es schaut dann auf der Platte, ob eine passende Datei dazu vorhanden ist. Wenn ja, kann die Session fortgesetzt werden, wenn nein, würfelt PHP eine neue SID aus und legt eine leere Session-Datei an. Die Session wird also neu gesartet.

Wie gesagt, hat das aber nichts mit den aktuellen rechten des erkannten Benutzers zu tun. Bisher hat der sich auch noch gar nicht authentifiziert. Das macht man dann, aufsetzend auf der Session, mit einem ensprechenden Dokument (Formular) und Script. Das Script prüft die gesendeten Schlüssel (i.d.R. Paar aus Name und Passwort) und wenn diese zusammenpassen, merkt es sich das z.B. in der Session, dass der Benutzer mit der Nummer 2780664 und dem Namen "Loginpaul" sich um [TIMESTAMP] zu erkennen gegeben hat und um [TIMESTAMP] das letzte Mal einen Aufruf gemacht hat.

Ab nun ist der Benutzter "angemeldet". Welche Rechte er hat, sollte man bei jedem Aufruf aktuell aus der Rechtetabelle auslesen.

Die baut man bei atomistischem Script-System z.B. so auf, dass man für jeden User und jedes Script die Grundrechte Read, Insert, Update, Delete, Grant, festlegt und im Script dann auswerten kann.

Kompliziertere Verfahren sind jederzeit denkbar :-)

LG
Chris