Hallo Core'lers
Da xSay seinen Guide trotz Aufforderung nicht erweitert hat, habe ich diesen gelöscht und den Entschluss gefasst einen neuen zu schreiben.
Und hier ist die bessere Variante.
[FELD="Inhalt"]
[/FELD]
[COLOR="Orange"][SIZE="4"]1. Vorwort:[/SIZE][/COLOR]
Jeder, der schonmal im Internet war (denke das waren so die meisten, die hier sind^^), kennt doch sicher Formulare.
Diese Dinger werden meistens dafür genutzt, Daten von Usern eingeben zu lassen, um sie dann für Registrationen o.Ä zu nutzen.
Die PHP'ler unter uns werden sicher wissen, dass man zum Speichern von Daten Variablen nehmen kann. (Auch unsere Programmierer unter uns, Variablen gibts fast überall)
Jedoch haben Variablen in PHP eine Lebensdauer von 1 Seite, das heißt nach einem Seitenwechsel sind die Daten weg.
Um nun eine Langzeitspeicherung vorzunehmen, benutzt man Sessions.
[COLOR="Orange"][SIZE="4"]2. Was ist eine Session[/SIZE][/COLOR]
Eine Session, auch Sitzung genannt, ist das Zauberwort um Daten zu speichern.
Eine Session hat eine längere Lebensdauer als eine Variable, nämlich solange wie man den Browser nicht schließt.
Wenn eine Session gestartet wird, vergibt der Server eine einzigartige ID, die so genannte SessionID.
Diese wird in Form eines Cookies auf dem PC gespeichert und dieses Cookie hat die besagte Lebendauer einer Browsersession.
Bei jedem weiteren Seitenaufruf schickt der Browser alle SessionIDs mit, die er kennt und dies an alle Webserver, die man im Verlauf einer einzigen Session ansurft.
Der Server vergleicht nun die IDs mit denen, die er kennt und noch vorhanden sind. (Sessions haben auch auf dem Server nur eine begrenzte Lebensdauer, meist werden die Daten einer bestimmten Session nach 30min ohne Anforderung gelöscht, hängt von der Konfiguration des Webservers ab.)
Sollte eine SessionID mit der auf dem Server übereinstimmen, so sendet der Webserver die Daten der jeweiligen Session an den Browser, bzw er lädt diese und nutzt sie bei der Abarbeitung von der jeweiligen Webseite.
Lange Theorie, ich weiß, aber nun kommen die interessanteren Dinge, nämlich die Anwendung^^
[COLOR="Orange"][SIZE="4"]3. Wie benutzt man Sessions[/SIZE][/COLOR]
Als erstes sollte man Sessions einsatzbereit machen.
Dies erfolgt über
Diesen Befehl am besten an den Anfang der Seite, um die volle Funktionalität zu gewährleisten.
Wie gesagt, der Browser schickt die SessionIDs, die er kennt zum Webserver und der Webserver nimmt dann die passenden SessionID und startet die Session mit dieser ID.
Nachdem die Seite wieder an den Browser gesendet wurde, sind alle Aktionen geschehen, die eine Session nutzen und die anderen Dinge auch.
Aber dazu später mehr.
Nachdem eine Session geladen oder erstellt wurde wurde (Anmerkung: Man kann mit o.g Befehl auch eine Session starten), kann sie benutzt werden.
Nehmen wir mal an, wir wollen einen Benutzer einer Webseite identifizieren solange er auf der Webseite online ist und seinen Namen als Begrüßung nutzen.
Natürlich könnte man dafür Variablen nutzen, aber das ist auf Dauer lästig.
Stattdessen nutzen wir Sessions. (Anmerkung 2: Sessions sind auch Variablen, bzw eine sog. Superglobale als Array.)
Nun, nachdem sich der User eingeloggt hat und die Daten überprüft worden sind, wollen wir die Daten in der Session speichern.
Dazu kann man die Session wie ein normales Array nutzen, mit der Ausnahme dass Session immer Global sind und damit überall gültig, auch wenn sie in einer Funktion definiert wurden.
Hier ein Beispiel:
Wenn wir nun diese Information nutzen wollen, so reicht folgender Befehl:
In unserem Beispiel lautet der Befehl:
Der Befehl erzeugt folgende Ausgabe:
Wie ihr seht, lassen sich Sessions nutzen wie eine normale Variable, mit der Ausnahme dass man sie erst durch o.g Befehl einsatzbereit machen muss.
[COLOR="Orange"][SIZE="4"]4. Beenden einer Session[/SIZE][/COLOR]
Um voranzukommen und das Thema nicht zu lang zu machen, folgt nun dieser Punkt.
Also nehmen wir unsere Session von vorhin.
Wir wollen nun die Session beenden, weil der User sich ausgeloggt hat.
Dazu haben wir mehrere Möglichkeiten.
1. Der User beendet den Browser - Die Session wird ungültig weil die Sitzung beendet ist.
2. Wir löschen die Session manuell.
Dies können wir durch folgende Befehle lösen:
Nachdem dies getan wurde, sind alle funktionen welche Sessions brauchen, nicht mehr verfügbar.
Man muss die Session neu anlegen bzw füllen, dann klappts wieder^^
[SIZE="4"][COLOR="Orange"]5. Fehlerbehandlung - Could not send Session Cookie - Headers already send:[/COLOR][/SIZE]
Sollte euch dieser Fehler vorkommen, keine Panik.
Hier meine Fehlerbehandlung, bissl weiter unten schonmal erklärt^^
[SIZE="4"][COLOR="Orange"]6. Nachwort:[/COLOR][/SIZE]
So das war mein Guide, hoffe er gefällt euch besser als der von xSay
Lob Kritik usw könnt ihr hier posten^^
Falls ihr noch irgendeinen Guide wollt, so schreibt mir ne PM, ich werde sehen ob ich genug weiß für nen Guide.
Zum Abschluss noch paar nette Infos über den Guide:
[FELD="Statistiken:"]
Allle Infos stammen aus Word, über die Funktion "Wörter zählen" kam ich dran
Seiten: 3 (ohne BB-Code nur 2)
Wörter: 801 (ohne BB-Code nur 796)
Zeichen inklusive BB-Code ohne Leerzeichen: 4.728
Zeichen inklusive BB-Code und Leerzeichen: 5.461
Zeichen ohne BB-Code und Leerzeichen: 4.351
Zeichen ohne BB-Code mit Leerzeichen: 5.086
Absätze: 68 (ohne BB-Code: 61)
Zeilen: 107 (ohne BB-Code: 100)
Gesamte Zeit die gebraucht wurde für den Guide: 1-2 Stunden)
Diese Statistiken wurden mit Sorgfalt erstellet und können abweichen, ich übernehme keine Haftung für Abweichungen.
Dieses Statistikenfeld zählt übrigens nicht mit zur Berechnung
EDIT 03.03.2010: Statistiken Out of Date
[/FELD]
Da xSay seinen Guide trotz Aufforderung nicht erweitert hat, habe ich diesen gelöscht und den Entschluss gefasst einen neuen zu schreiben.
Und hier ist die bessere Variante.
[FELD="Inhalt"]
- Vorwort
- Was ist eine Session
- Wie benutzt man Sessions
- Beenden einer Session
- Fehlerbehandlung - Could not send Session Cookie, Headers already send
- Nachwort
[/FELD]
[COLOR="Orange"][SIZE="4"]1. Vorwort:[/SIZE][/COLOR]
Jeder, der schonmal im Internet war (denke das waren so die meisten, die hier sind^^), kennt doch sicher Formulare.
Diese Dinger werden meistens dafür genutzt, Daten von Usern eingeben zu lassen, um sie dann für Registrationen o.Ä zu nutzen.
Die PHP'ler unter uns werden sicher wissen, dass man zum Speichern von Daten Variablen nehmen kann. (Auch unsere Programmierer unter uns, Variablen gibts fast überall)
Jedoch haben Variablen in PHP eine Lebensdauer von 1 Seite, das heißt nach einem Seitenwechsel sind die Daten weg.
Um nun eine Langzeitspeicherung vorzunehmen, benutzt man Sessions.
[COLOR="Orange"][SIZE="4"]2. Was ist eine Session[/SIZE][/COLOR]
Eine Session, auch Sitzung genannt, ist das Zauberwort um Daten zu speichern.
Eine Session hat eine längere Lebensdauer als eine Variable, nämlich solange wie man den Browser nicht schließt.
Wenn eine Session gestartet wird, vergibt der Server eine einzigartige ID, die so genannte SessionID.
Diese wird in Form eines Cookies auf dem PC gespeichert und dieses Cookie hat die besagte Lebendauer einer Browsersession.
Bei jedem weiteren Seitenaufruf schickt der Browser alle SessionIDs mit, die er kennt und dies an alle Webserver, die man im Verlauf einer einzigen Session ansurft.
Der Server vergleicht nun die IDs mit denen, die er kennt und noch vorhanden sind. (Sessions haben auch auf dem Server nur eine begrenzte Lebensdauer, meist werden die Daten einer bestimmten Session nach 30min ohne Anforderung gelöscht, hängt von der Konfiguration des Webservers ab.)
Sollte eine SessionID mit der auf dem Server übereinstimmen, so sendet der Webserver die Daten der jeweiligen Session an den Browser, bzw er lädt diese und nutzt sie bei der Abarbeitung von der jeweiligen Webseite.
Lange Theorie, ich weiß, aber nun kommen die interessanteren Dinge, nämlich die Anwendung^^
[COLOR="Orange"][SIZE="4"]3. Wie benutzt man Sessions[/SIZE][/COLOR]
Als erstes sollte man Sessions einsatzbereit machen.
Dies erfolgt über
Diesen Befehl am besten an den Anfang der Seite, um die volle Funktionalität zu gewährleisten.
Wie gesagt, der Browser schickt die SessionIDs, die er kennt zum Webserver und der Webserver nimmt dann die passenden SessionID und startet die Session mit dieser ID.
Nachdem die Seite wieder an den Browser gesendet wurde, sind alle Aktionen geschehen, die eine Session nutzen und die anderen Dinge auch.
Aber dazu später mehr.
Nachdem eine Session geladen oder erstellt wurde wurde (Anmerkung: Man kann mit o.g Befehl auch eine Session starten), kann sie benutzt werden.
Nehmen wir mal an, wir wollen einen Benutzer einer Webseite identifizieren solange er auf der Webseite online ist und seinen Namen als Begrüßung nutzen.
Natürlich könnte man dafür Variablen nutzen, aber das ist auf Dauer lästig.
Stattdessen nutzen wir Sessions. (Anmerkung 2: Sessions sind auch Variablen, bzw eine sog. Superglobale als Array.)
Nun, nachdem sich der User eingeloggt hat und die Daten überprüft worden sind, wollen wir die Daten in der Session speichern.
Dazu kann man die Session wie ein normales Array nutzen, mit der Ausnahme dass Session immer Global sind und damit überall gültig, auch wenn sie in einer Funktion definiert wurden.
Hier ein Beispiel:
Wenn wir nun diese Information nutzen wollen, so reicht folgender Befehl:
In unserem Beispiel lautet der Befehl:
Der Befehl erzeugt folgende Ausgabe:
Wie ihr seht, lassen sich Sessions nutzen wie eine normale Variable, mit der Ausnahme dass man sie erst durch o.g Befehl einsatzbereit machen muss.
[COLOR="Orange"][SIZE="4"]4. Beenden einer Session[/SIZE][/COLOR]
Um voranzukommen und das Thema nicht zu lang zu machen, folgt nun dieser Punkt.
Also nehmen wir unsere Session von vorhin.
Wir wollen nun die Session beenden, weil der User sich ausgeloggt hat.
Dazu haben wir mehrere Möglichkeiten.
1. Der User beendet den Browser - Die Session wird ungültig weil die Sitzung beendet ist.
2. Wir löschen die Session manuell.
Dies können wir durch folgende Befehle lösen:
Nachdem dies getan wurde, sind alle funktionen welche Sessions brauchen, nicht mehr verfügbar.
Man muss die Session neu anlegen bzw füllen, dann klappts wieder^^
[SIZE="4"][COLOR="Orange"]5. Fehlerbehandlung - Could not send Session Cookie - Headers already send:[/COLOR][/SIZE]
Sollte euch dieser Fehler vorkommen, keine Panik.
Hier meine Fehlerbehandlung, bissl weiter unten schonmal erklärt^^
internetfreak schrieb:
ZU dem Fehler:
Wie man der Meldung entnehmen kann, wurden die HTTP-Header schon gesendet.
Aber hier die Erklärung warum der Fehler kommt und wie er zu beheben ist:
session_start(); ist eine so genannte Header Funktion.
Es gibt verschiedene Header Funktionen cookie_start() gehört auch dazu.
(P.S: Damit kann man Cookies starten und nutzen, wie bei Sessions, nur dass Cookies von der Lebendauer wieder anders sind.)
Aber nun zurück zum Fehler.
Der Befehl session_start MUSS! vor allen anderen Befehlen stehen, wo eine Ausgabe getätigt wird.
Am besten man setzt ihn noch vor den einleitenden <html> Tag, also in Zeile 1 der Seite die Sessions nutzen soll.
Ansonsten, setze vor das session_start noch ein "ob_start()" und nach dem session_start() ein "ob_end_flush()"
ob steht für OutPut Buffering, d.h es fängt die Ausgabe ab und speichert sie in einem Puffer.
So kann eine Header Information auch noch wirken, wenn bereits eine Ausgabe getätigt wurde.
Nützlich ist das z.B. bei Nutzung von include, da je nach Stelle des Includes schon Ausgaben getätigt worden sein können.
Hoffe der Fehler wird so behoben, sollte er zumindest, ich benutze Sessions schon ne Zeit lang.
[SIZE="4"][COLOR="Orange"]6. Nachwort:[/COLOR][/SIZE]
So das war mein Guide, hoffe er gefällt euch besser als der von xSay
Lob Kritik usw könnt ihr hier posten^^
Falls ihr noch irgendeinen Guide wollt, so schreibt mir ne PM, ich werde sehen ob ich genug weiß für nen Guide.
Zum Abschluss noch paar nette Infos über den Guide:
[FELD="Statistiken:"]
Allle Infos stammen aus Word, über die Funktion "Wörter zählen" kam ich dran
Seiten: 3 (ohne BB-Code nur 2)
Wörter: 801 (ohne BB-Code nur 796)
Zeichen inklusive BB-Code ohne Leerzeichen: 4.728
Zeichen inklusive BB-Code und Leerzeichen: 5.461
Zeichen ohne BB-Code und Leerzeichen: 4.351
Zeichen ohne BB-Code mit Leerzeichen: 5.086
Absätze: 68 (ohne BB-Code: 61)
Zeilen: 107 (ohne BB-Code: 100)
Gesamte Zeit die gebraucht wurde für den Guide: 1-2 Stunden)
Diese Statistiken wurden mit Sorgfalt erstellet und können abweichen, ich übernehme keine Haftung für Abweichungen.
Dieses Statistikenfeld zählt übrigens nicht mit zur Berechnung
EDIT 03.03.2010: Statistiken Out of Date
[/FELD]