session_start() Fehler
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
argument
auslese
benutzer
besucher
dank
datum
eigene sitzung
http
kapitel
not
output
session
sinn
sitzung
speichern
starten
support
system
test
welt
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
PHP bietet seit der Version 4.0 Session Verwaltung an. Diese "Session" sind inzwischen in aller Munde, die meisten wissen auch noch, dass sich dahinter kryptisch anmutende Strings im Browser verbergen oder das ganze eine Alternative zu Cookies darstellt; da h?rt es aber dann auch schon auf. Diese Einleitung soll kurz und grob in Sessions einf?hren und den Umgang mit Sessions vermitteln: Die Session ID Als erstes gilt es die Session ID zu verstehen. Der Sinn von Sessions (Sitzungen) ist es, dass jeder Besucher bei seinem Besuch eine eigene Sitzung erh?lt. Innerhalb dieser Sitzung k?nnen f?r den einzelnen Benutzer dann Daten gespeichert und sp?ter wieder abgerufen werden. Bei vielen Besuchern wird es nat?rlich dann auch viele Sessions geben; Es muss somit jede Session eindeutig gemacht werden, es muss klar sein, welche Benutzer sich in welcher Sitzung befindet und (noch wichtiger) welche Daten sich in welcher Sitzung befinden. Damit alldas nicht so chaotisch endet, wie es nun gerade zu lesen war, gibt es die SessionID. Jede Session ID steht f?r eine eigene Sitzung und wird automatisch erzeugt. Das ganze sieht so aus: Benutzer --erh?lt--> Sitzung mit eigener SitzungsID <--gespeichert#Daten somit: Benutzer hat durch --> eigene Sitzung --> eigene Daten Das System sieht also so aus, dass jeder Benutzer eine eigene Sitzung hat, in der nur f?r ihn Daten gespeichert werden k?nnen. Stellt es euch so vor, als ob der Benutzer einen Cookie erh?lt, wobei der Cookie aber nicht beim Besucher sondern auf unserem Server abgelegt wird. Anhand der Session ID wird erkannt, welcher Cookie zu welchem Besucher geh?rt. Sessions nutzen Cookies! Ein altes Vorurteil, dass ausger?umt werden muss: Auch Sessions nutzen Cookies! Die oben erw?hnte Session ID muss ja schlie?lich irgendwie dem Besucher zugeordnet werden. Dies geschieht entweder ?ber Cookies, in denen die Session ID gespeichert wird. Wenn man das nicht m?chte, muss man dies in der php.ini ausschalten; dazu den Eintrag "session.use_cookies" suchen und auf 0 stellen. Nun wird die Session ID nicht in einem Cookie gespeichert, sondern ?ber die URL ?bertragen. Allgemeines Wer bis hier durchgehalten hat, hat das schlimmste hinter sich. Alles nun folgende baut auf den bisherigen ?berlegungen auf. Nochmal zusammengefasst: Der Benutzer kommt und muss eine Sitzung erhalten (mit Ihr die Sitzungs ID). In dieser Sitzung m?chten wir Daten speichern und zum Schluss (irgendwo) wieder auslesen. Der Reihe nach notiert sieht dies also so aus: 1. Sitzung starten 2. Daten in Sitzung speichern 3. daten wieder auslesen Ein kleiner Nachtrag: Es fehlt noch ein Punkt 4: Sitzung wieder schlie?en. Das muss nicht sein, wirkt aber besser; was man beginnt, sollte man immer auch wieder beenden. Sitzung starten Das ist nicht sonderlich kompliziert, f?r jeden einzelnen Schritt gibt es in PHP einen eigenen Befehl. Sitzungen startet man in PHP mit session_start(); Beendet wird eine Sitzung mit Session_Destroy(). Im Skript sieht das so aus: < ?php session_start(); session_destroy(); ? > Damit startet und beendet man eine Sitzung. Viel wird das Skript im Browser nicht bringen, dazu jetzt mehr. Daten in Sitzung speichern Oben wurde von mir aufgezeigt, wie man eine Sitzung startet (und beendet). Nun wollen wir daten in der Sitzung speichern. Das ganze geht recht simpel von der Hand: In Sessions werden Variablen einfach abgelegt (das nennt sich dann registriert) und mit den variablen steht auch der Wert der Variablen in der Session. Das Kommando zum registrieren von Variablen lautet session_register(). Im Skript sieht das so aus: < ?php session_start(); session_register(test); $test=4; ? > Nein, ich habe hier keinen Tippfehler: Bei session_register() wird die Variable ohne das Dollarzeichen angeben! Beachtet das immer. Wenn die Variable einmal registriert ist, kann sie beliebig ver?ndert werden - automatisch wird der Wert in der Sitzung ge?ndert. Werte in Session speichern und ?bertragen Das speichern von Werten macht nat?rlich nur Sinn, wenn sie sp?ter auch wieder ausgelesen werden k?nnen. das geht ebenso mit der session_register() Funktion. Im folgenden gibt es eine Seite test.php auf der unsere variable $test mit Wert 4 gespeichert wird. Auf der Seite test2.php wird diese Variable wieder ausgelesen: < ?php session_start(); session_register(test); $test=4; ? > test2.php: < ?php session_register(test); echo "$test"; ? > Das war es schon, eine Variable wurde von der einen auf die andere Seite ?bertragen. Fehlerursachen Wenn eine Variable aus der Session ausgelesen wird, werden eventuell vorhandene Variablen ?berschrieben! Auf unser obiges Beispiel bezogen, wird im folgenden 4, nicht 5 ausgegeben: < ?php $test=5; session_register(test); echo "$test"; ? > In diesem Zusammenhang praktisch ist die Funktion session_unregister(), die eine Variable auch wieder aus der registrierung entfernt. Wer nun auf seinem Heimrechner einen Testlauf startet (unter PHPTriad) und pl?tzlich eine Fehlermeldung erh?lt, eine Datei / ein Verzeichnis kann nicht ge?ffnet bzw. gefunden werden: Auf c: ein verzeichnis tmp anlegen - dort werden die Session Daten dann gespeichert. Wem das nicht reicht, der findet in der PHP Referenz jederzeit mehr Infos. Gleichsam m?chte ich an dieser Stelle noch einmal ganz dezent Werbung f?r die PHP Kompaktreferenz von mir machen - Cookies & Sessions haben in diesem Buch ein eigenes Kapitel in Kapitel 8 (versteht sich doch); dort wird etwas tiefer auf Cookies und die Problematik, besonders mit dem IE eingegangen.
-
Also ich bin nicht allwissend, deshalb berichtigt mich wenn ich was falsches laber
Kann mir jetzt trotdzem einer noch so leicht erkl?ren was Sessions machen?
Die weisen jedem Besucher der Homepage eine eindeutige ID zu, die nur sehr schwer zu erraten ist ^^ http://www.php-einfach.de/einf_php_session_erraten.php
F?r was sind die gut?
Damit kann man z.B. einen Login basteln
Kommt die Welt noch ohne Sessions aus? ;)
hmm, dar?ber k?nnte man jetzt philosophieren (<- richtig geschrieben?) -
So Ungef?r ...hab den Text schnell gegoogelt und reinkopiert ...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage